メインコンテンツまでスキップ

エンティティの特徴量の値をパージ

備考

ベータ版

この機能はベータ版です。使用するには、ワークスペース管理者が [プレビュー] ページから Feature Views Advanced Functionality を有効にする必要があります。Databricksのプレビューを管理するを参照してください。

機能エンティティ パージを使用して、選択したエンティティの 1 つ以上のフィーチャ ビューのコンピュートされた特徴量を削除します。パージにより、Unity CatalogおよびLakebase内の該当するオフラインおよびオンラインのマテリアライゼーションテーブルから一致する値が削除されます。パージするマテリアライゼーションを作成したワークスペースでパージのランを実行します。これにより、フィーチャービューの定義、マテリアライゼーション、またはソースデータが削除されることはありません。他のワークスペースで作成されたマテリアライゼーションは影響を受けません。

たとえば、データ削除リクエストを受信した後に、顧客のマテリアライズされた特徴量値をパージできます。

警告

パージを送信する前に、選択したエンティティを特徴量ソースデータから削除し、ソースがそれらのエンティティ用の新しいデータを受信しないようにする必要があります。パージはソースを変更せず、スケジュールされた継続的なマテリアライズを停止しません。一致するソースデータが残っているか、後から到着した場合、マテリアライズによって値が再作成されます。

要件​

  • 特徴量は、登録されたFeature Viewsである必要があります。各Feature Viewには、パージを送信するワークスペースで作成されたマテリアライゼーションが少なくとも1つ存在する必要があります。異なるワークスペースで作成されたマテリアライゼーションをパージするには、ワークスペースごとに個別のリクエストを送信します。RequestSource、FeatureViewSource、およびその他の実体化できない特徴量はサポートされていません。
  • 3 つの部分からなる Unity Catalog 名を使用して、1~500 個の一意のフィーチャを指定します。
  • リクエストを送信する際、機能に対してアクティブなパージまたはバックフィル操作が進行中であってはなりません。
  • エンティティテーブルは、少なくとも1つの列を持つUnity CatalogのDeltaテーブルである必要があります。「エンティティテーブルの準備」を参照してください。
  • Databricks Feature Engineeringクライアント バージョン 0.18.0 以降を使用してください。

権限​

本番運用では、機能ビューを作成および実体化するService Principalと同じプリンシパルとしてパージを実行することをDatabricksでは推奨しています。このプリンシパルには通常、すでに必要な権限が付与されています。権限が変更されている場合は、パージを送信する前に次の要件を確認してください。

パージを送信して完了するには、次の権限が必要です:

  • MANAGE リクエスト内のすべてのFeature Viewに対して。
  • SELECT エンティティテーブルで。
  • SELECT および、パージが更新するオフライン、部分集計、およびオンラインの各テーブルの MODIFY。
  • オンラインストアで使用される Lakebase インスタンスまたはプロジェクトへのアクセス(オンラインテーブルの読み取りおよび更新の権限を含む)。「プロジェクト権限の付与」を参照してください。
  • 埋め込みスキーマのないスキーマレジストリ ストリームの場合、利用可能な場合は SELECT や READ_METADATA などの取り込みテーブルのメタデータを読み取る権限。パージの検証では、取り込みテーブルの行ではなく、スキーマを読み取ってエンティティキーの型を解決します。
  • USE CATALOG また、上記の各リソースの親カタログとスキーマに対する USE SCHEMA が必要です。

Unity Catalog の特権の詳細については、 Unity Catalog の特権リファレンスを参照してください。フィーチャ ビューの権限については、 フィーチャ ビューのマテリアライズを参照してください。

エンティティテーブルの準備​

削除するエンティティを特定する Delta テーブルを作成します。各列は、リクエスト内のすべての Feature View のエンティティキーに対応している必要があります。列名とデータ型は、Feature View のエンティティキーと一致している必要があります。非キー列を含めないでください。

テーブルには、フィーチャビューのエンティティリストの先頭プレフィックスであるエンティティキーのサブセットを含めることができます。パージは、残りのキーに関係なく、指定されたキー値を持つすべてのエンティティに一致します。null キー値がサポートされています。

重要

エンティティテーブルの列には、すべてのエンティティキー、またはフィーチャビューのエンティティリストの順序に一致する先頭のプレフィックスが含まれている必要があります。エンティティテーブル内の列の順序は関係ありません。

既存のオンライン テーブルの場合、主キーの順序は、特徴量ビューのエンティティ リストの順序とは異なる場合があります。その場合、検証では代わりにオンライン テーブルの主キー プレフィックスを使用し、部分キーのリクエストが一致しない場合は必要な順序を報告します。

要求された特徴量ビューは、エンティティテーブルの列がすべての特徴量ビューのエンティティキーセットのサブセットである限り、異なるエンティティキーセットを持つことができます。

パージジョブは1つのDeltaテーブルのバージョンを解決し、そのスナップショットをすべてのターゲットに使用します。リクエストの送信後は、エンティティテーブルを変更しないでください。ジョブがバージョンを解決した後に追加されたエンティティをパージするには、別のリクエストを送信します。

削除の送信と監視​

FeatureEngineeringClient.purge_feature_entitiesを呼び出します。このメソッドは、パージの完了を待たずに、長期にわたるオペレーションを返します。

Python
from databricks.feature_engineering import FeatureEngineeringClient

fe = FeatureEngineeringClient()

operation = fe.purge_feature_entities(
features=[
"main.feature_store.customer_purchase_count_30d",
"main.feature_store.customer_purchase_total_30d",
],
entities_table="main.feature_store.entities_to_purge",
)

print(f"Purge operation: {operation.name()}")

# wait() polls until the operation finishes.
response = operation.wait()
print(f"Purge state: {response.state}")

for result in response.results or []:
print(
result.feature,
result.offline_state,
result.online_state,
result.error,
)

operation.done() を使用して操作を更新し、完了を待たずにステータスを 1 回チェックします。次に、operation.metadata() を使用して、その PENDING または RUNNING の状態を検査します。

完了したレスポンスには、フィーチャービューごとに1つの結果が含まれます。

  • offline_state オフラインマテリアライゼーションの結果をレポートします。
  • online_state オンラインマテリアライゼーションの複合結果を報告します。
  • 結果は、SUCCEEDED、FAILED、または NOT_APPLICABLE です。
  • フィーチャービューにそのストアタイプのマテリアライゼーションターゲットがない場合、結果は NOT_APPLICABLE になります。たとえば、オンライン専用のフィーチャービューのオフラインの結果は NOT_APPLICABLE になり、オンラインのマテリアライゼーションがないフィーチャービューのオンラインの結果は NOT_APPLICABLE になります。
  • error 該当するターゲットが失敗した場合のフィーチャビュー固有のエラーが含まれています。

特徴量ごとの結果をすべて確認します。操作は、フィーチャ ビューやストアの種類によって異なる結果で終了する場合があります。

操作レベルの障害については、response.stateとresponse.errorも確認してください。

消去が部分的に失敗した場合は、機能ごとのエラーを検査し、アクセスや構成の問題を修正してください。その後、失敗した結果となった特徴量ビューに対してのみ、新しい request_id を指定して新しい消去リクエストを送信します。再試行する前に、ソースデータをクリーンな状態に保ちます。障害が持続する場合は、Databricksサポートにお問い合わせください。

リクエストを安全に再試行する​

request_id を UUID4 の値に設定し、リクエストが承認されるまで保持します。ネットワークまたはクライアントの障害によって送信結果が不明確になった場合は、同じ ID を使用して同じリクエストを再試行してください。Databricks は、2 番目の削除を開始する代わりに、既存の操作を返します。

特徴量セットとエンティティテーブルは、元のリクエストと一致している必要があります。異なるリクエストパラメーターでIDを再利用することは拒否されます。IDを省略するとクライアントがIDを生成しますが、アプリケーションレベルのリトライをべき等にするには明示的なIDが必要です。これは、外部のオーケストレーションレイヤーが操作を再試行する場合にも役立ちます。

パージコンピュートコストの属性​

パージランではServerlessコンピュートを使用します。Databricks Feature Engineeringクライアントバージョン0.18.1以降では、tagsまたはbudget_policy_idを使用してコンピュートコストを割り当てます:

Python
operation = fe.purge_feature_entities(
features=["main.feature_store.customer_purchase_count_30d"],
entities_table="main.feature_store.entities_to_purge",
tags={"team": "recommendations", "workflow": "privacy-deletion"},
budget_policy_id="00000000-0000-0000-0000-000000000000",
)

タグはパージコンピュートに適用され、Unity Catalogフィーチャーリソースには適用されません。1 つのリクエストでサポートされるタグの数は最大 25 個です。