特徴量グループからレコードを削除する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

特徴量グループからレコードを削除する

Amazon SageMaker Feature Store を使用してAPI、特徴量グループからレコードを削除できます。特徴量グループは、機械学習 (ML) データを含むオブジェクトであり、データの列は特徴量によって説明され、データはレコードに含まれます。レコードには、特定のレコード識別子に関連付けられている特徴量の値が含まれます。

機能グループには、オンラインストアとオフラインストアの 2 つのストレージ設定があります。オンラインストアは、最新のイベント時刻のレコードのみを保持し、通常、ML 推論のリアルタイム検索に使用されます。オフラインストアは、すべてのレコードを保持し、履歴データベースとして機能し、通常、特徴量探索、機械学習トレーニング、バッチ推論に使用されます。

特徴量ストアの概念の詳細については、「取り込み図」を参照してください。

特徴量グループからレコードを削除する方法は 2 つあり、動作はストレージ設定によって異なります。次のトピックでは、オンラインストアとオフラインストアからレコードをソフトおよびハード削除する方法と、例を示します。

オンラインストアからレコードを削除する

DeletionMode リクエストパラメータを使用して SoftDelete (デフォルト) または を指定DeleteRecordAPIすることで、 を使用してオンラインストアからレコードをソフトまたはハード削除できますHardDelete。の詳細についてはAPI、「Amazon SageMaker API リファレンスDeleteRecordDeleteRecord」の「」を参照してください。

オンラインストアの場合:

  • ソフト削除 (デフォルト) すると、レコードは GetRecord BatchGetRecord または によって取得できなくなりnull、特徴量列の値は、 RecordIdentifer および EventTime特徴量の値を除いて に設定されます。

  • ハード削除すると、レコードはオンラインストアから完全に削除されます。

どちらの場合も、Feature Store は削除されたレコードマーカーを に追加しますOfflineStore。削除されたレコードマーカーは、RecordIdentifer元のものと同じですが、is_deleted値が に設定されTrue、削除入力 EventTimeに設定されEventTime、その他の特徴値が に設定されているレコードですnull

EventTime指定された は、同じ OnlineStoreの の既存のレコードEventTimeの よりも後に設定DeleteRecordする必要がありますRecordIdentifer。そうでない場合、削除は行われません。

  • の場合SoftDelete、既存の (削除されていない) レコードは に残りますがOnlineStore、削除レコードマーカーは に書き込まれますOfflineStore

  • HardDeleteEventTime: を返し400 ValidationException、削除オペレーションが失敗したことを示します。削除レコードマーカーは に書き込まれませんOfflineStore

次の例では、 SDK for Python (Boto3) delete_recordオペレーションを使用して、特徴量グループからレコードを削除します。特徴量グループからレコードを削除するには、以下が必要です。

  • 特徴量グループ名 (feature-group-name

  • 識別子値を文字列として記録 (record-identifier-value

  • 削除イベント時間 (deletion-event-time

    削除イベント時刻は、削除するレコードのイベント時刻より後である必要があります。

オンラインストアのソフト削除の例

ソフト削除には を使用し、デフォルトDeleteRecordAPIを使用するDeletionModeか、 DeletionModeを に設定する必要がありますSoftDelete

import boto3 client = boto3.client('sagemaker-featurestore-runtime') client.delete_record( FeatureGroupName='feature-group-name', RecordIdentifierValueAsString='record-identifier-value', EventTime='deletion-event-time', TargetStores=[ 'OnlineStore', ], DeletionMode='SoftDelete' )

オンラインストアのハード削除の例

ハード削除の場合は、 を使用しDeleteRecordAPI、 DeletionModeを に設定する必要がありますHardDelete

import boto3 client = boto3.client('sagemaker-featurestore-runtime') client.delete_record( FeatureGroupName='feature-group-name', RecordIdentifierValueAsString='record-identifier-value', EventTime='deletion-event-timestamp', TargetStores=[ 'OnlineStore', ], DeletionMode='HardDelete' )

オフラインストアからレコードを削除する

Amazon SageMaker Feature Store では、OfflineStoreIceberg テーブル形式からレコードをソフトおよびハード削除できます。OfflineStore Iceberg テーブル形式の場合:

  • レコードをソフト削除すると、Iceberg テーブルファイルの最新バージョンにはレコードが含まれませんが、以前のバージョンには引き続きレコードが含まれ、タイムトラベルを使用してアクセスできます。タイムトラベルの詳細については、Athena ユーザーガイドの「Iceberg テーブルデータのクエリ」と「タイムトラベルの実行」を参照してください。

  • レコードをハードに削除すると、レコードを含む Iceberg テーブルの以前のバージョンが削除されます。この場合、削除する Iceberg テーブルのバージョンを指定する必要があります。

Iceberg テーブル名を取得する

OfflineStore Iceberg テーブルからソフトおよびハード削除するには、Iceberg テーブル名 を取得する必要がありますiceberg-table-name。次の手順では、Feature Store を使用して、Iceberg テーブル形式 DisableGlueTableCreation = False (デフォルト) を使用してオフラインストアストレージ設定を使用して特徴量グループを作成していることを前提としています。特徴量グループの作成の詳細については、「」を参照してくださいAmazon SageMaker Feature Store の使用を開始する

を取得するにはiceberg-table-nameDescribeFeatureGroup API を使用して を取得しますDataCatalogConfig。これには、 のデータカタログとして機能する Glue テーブルのメタデータが含まれますOfflineStoreTableName 内の DataCatalogConfigは ですiceberg-table-name

Amazon Athena オフラインストアのソフト削除とハード削除の例

次の手順では、Amazon Athena を使用して、OfflineStoreIceberg テーブルからレコードをソフト削除してからハード削除します。これは、 で削除するレコードOfflineStoreが削除されたレコードマーカーであることを前提としています。で削除されたレコードマーカーの詳細についてはOfflineStore、「」を参照してくださいオンラインストアからレコードを削除する

  1. Iceberg テーブル名 を取得しますiceberg-table-name。Iceberg テーブル名を取得する方法については、「」を参照してくださいIceberg テーブル名を取得する

  2. DELETE コマンドを実行して、Iceberg テーブルの最新バージョン (またはスナップショット) にレコードが含まれないようにOfflineStore、 のレコードをソフト削除します。次の例では、 is_deleted が であるレコード'True'と、それらのレコードの以前のイベント時間バージョン を削除します。削除を制限するために、他の機能に基づいて条件を追加できます。Athena DELETEで を使用する方法の詳細については、Athena ユーザーガイドDELETEの「」を参照してください。

    DELETE FROM iceberg-table-name WHERE record-id-feature-name IS IN ( SELECT record-id-feature-name FROM iceberg-table-name WHERE is_deleted = 'True')

    ソフト削除されたレコードは、タイムトラベルを実行して以前のファイルバージョンでも表示できます。タイムトラベルの実行については、Athena ユーザーガイドの「Iceberg テーブルデータのクエリ」と「タイムトラベルの実行」を参照してください。

  3. Iceberg テーブルの以前のバージョンからレコードを削除して、 からレコードをハード削除しますOfflineStore

    1. OPTIMIZE コマンドを実行して、関連する削除ファイルのサイズと数に基づいて、データファイルをより最適化されたレイアウトに書き換えます。Iceberg テーブルと構文の最適化の詳細については、Athena ユーザーガイドの「Iceberg テーブルの最適化」を参照してください。

      OPTIMIZE iceberg-table-name REWRITE DATA USING BIN_PACK
    2. (オプション、1 回のみ実行) ALTER TABLE コマンドを実行して Iceberg テーブルのセット値を変更し、以前のファイルバージョンを仕様に従ってハードに削除するタイミングを設定します。これは、 vacuum_min_snapshots_to_keep および vacuum_max_snapshot_age_secondsプロパティに値を割り当てることで実行できます。Iceberg テーブルセットプロパティの変更の詳細については、Athena ユーザーガイドALTERTABLESETPROPERTIESの「」を参照してください。Iceberg テーブルプロパティのキーと値のペアの詳細については、Athena ユーザーガイドの「テーブルプロパティ」を参照してください。

      ALTER TABLE iceberg-table-name SET TBLPROPERTIES ( 'vacuum_min_snapshots_to_keep'='your-specified-value', 'vacuum_max_snapshot_age_seconds'='your-specified-value' )
    3. VACUUM コマンドを実行して、現在のバージョンで参照されていない Iceberg テーブルの不要になったデータファイルを削除します。このVACUUMコマンドは、削除されたレコードが現在のスナップショットで参照されなくなった後に実行する必要があります。例えば、削除vacuum_max_snapshot_age_seconds後などです。Athena と 構文の詳細については、VACUUM「」を参照してくださいVACUUM

      VACUUM iceberg-table-name

Apache Spark オフラインストアのソフト削除とハード削除の例

Apache Spark を使用して OfflineStore Iceberg テーブルからレコードをソフトにしてからハード削除するには、Spark プロシージャを使用して、Amazon Athena オフラインストアのソフト削除とハード削除の例上記と同じ手順に従います。手順の完全なリストについては、「Apache Iceberg ドキュメント」の「Spark Procedures」を参照してください。

  • Athena で DELETE コマンドを使用する代わりに、OfflineStore: からソフト削除する場合は、Apache Spark で DELETE FROM コマンドを使用します。

  • Iceberg テーブルの以前のバージョンからレコードを削除して、 からレコードをハード削除するにはOfflineStore

    • Iceberg テーブル設定を変更する場合: Athena の ALTER TABLE コマンドを使用する代わりに、 expire_snapshotsプロシージャを使用します。

    • Iceberg テーブルから不要になったデータファイルを削除するには: Athena で VACUUM コマンドを使用する代わりに、 remove_orphan_filesプロシージャを使用します。