翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
特徴量グループからレコードを削除する
Amazon SageMaker Feature Store を使用してAPI、特徴量グループからレコードを削除できます。特徴量グループは、機械学習 (ML) データを含むオブジェクトであり、データの列は特徴量によって説明され、データはレコードに含まれます。レコードには、特定のレコード識別子に関連付けられている特徴量の値が含まれます。
機能グループには、オンラインストアとオフラインストアの 2 つのストレージ設定があります。オンラインストアは、最新のイベント時刻のレコードのみを保持し、通常、ML 推論のリアルタイム検索に使用されます。オフラインストアは、すべてのレコードを保持し、履歴データベースとして機能し、通常、特徴量探索、機械学習トレーニング、バッチ推論に使用されます。
特徴量ストアの概念の詳細については、「取り込み図」を参照してください。
特徴量グループからレコードを削除する方法は 2 つあり、動作はストレージ設定によって異なります。次のトピックでは、オンラインストアとオフラインストアからレコードをソフトおよびハード削除する方法と、例を示します。
オンラインストアからレコードを削除する
DeletionMode
リクエストパラメータを使用して SoftDelete
(デフォルト) または を指定DeleteRecord
APIすることで、 を使用してオンラインストアからレコードをソフトまたはハード削除できますHardDelete
。の詳細についてはAPI、「Amazon SageMaker API リファレンスDeleteRecord
DeleteRecord
」の「」を参照してください。
オンラインストアの場合:
-
ソフト削除 (デフォルト) すると、レコードは GetRecord BatchGetRecord または によって取得できなくなり
null
、特徴量列の値は、RecordIdentifer
およびEventTime
特徴量の値を除いて に設定されます。 -
ハード削除すると、レコードはオンラインストアから完全に削除されます。
どちらの場合も、Feature Store は削除されたレコードマーカーを に追加しますOfflineStore
。削除されたレコードマーカーは、RecordIdentifer
元のものと同じですが、is_deleted
値が に設定されTrue
、削除入力 EventTime
に設定されEventTime
、その他の特徴値が に設定されているレコードですnull
。
でEventTime
指定された は、同じ OnlineStore
の の既存のレコードEventTime
の よりも後に設定DeleteRecord
する必要がありますRecordIdentifer
。そうでない場合、削除は行われません。
-
の場合
SoftDelete
、既存の (削除されていない) レコードは に残りますがOnlineStore
、削除レコードマーカーは に書き込まれますOfflineStore
。 -
HardDelete
はEventTime
: を返し400 ValidationException
、削除オペレーションが失敗したことを示します。削除レコードマーカーは に書き込まれませんOfflineStore
。
次の例では、 SDK for Python (Boto3) delete_record
-
特徴量グループ名 (
)feature-group-name
-
識別子値を文字列として記録 (
)record-identifier-value
-
削除イベント時間 (
)deletion-event-time
削除イベント時刻は、削除するレコードのイベント時刻より後である必要があります。
オンラインストアのソフト削除の例
ソフト削除には を使用し、デフォルトDeleteRecord
APIを使用する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' )
オンラインストアのハード削除の例
ハード削除の場合は、 を使用しDeleteRecord
API、 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 では、OfflineStore
Iceberg テーブル形式からレコードをソフトおよびハード削除できます。OfflineStore
Iceberg テーブル形式の場合:
-
レコードをソフト削除すると、Iceberg テーブルファイルの最新バージョンにはレコードが含まれませんが、以前のバージョンには引き続きレコードが含まれ、タイムトラベルを使用してアクセスできます。タイムトラベルの詳細については、Athena ユーザーガイドの「Iceberg テーブルデータのクエリ」と「タイムトラベルの実行」を参照してください。
-
レコードをハードに削除すると、レコードを含む Iceberg テーブルの以前のバージョンが削除されます。この場合、削除する Iceberg テーブルのバージョンを指定する必要があります。
Iceberg テーブル名を取得する
OfflineStore
Iceberg テーブルからソフトおよびハード削除するには、Iceberg テーブル名 を取得する必要があります
。次の手順では、Feature Store を使用して、Iceberg テーブル形式 iceberg-table-name
DisableGlueTableCreation = False
(デフォルト) を使用してオフラインストアストレージ設定を使用して特徴量グループを作成していることを前提としています。特徴量グループの作成の詳細については、「」を参照してくださいAmazon SageMaker Feature Store の使用を開始する。
を取得するには
、 iceberg-table-name
DescribeFeatureGroup
API を使用して を取得しますDataCatalogConfig
。これには、 のデータカタログとして機能する Glue テーブルのメタデータが含まれますOfflineStore
。TableName
内の DataCatalogConfig
は です
。iceberg-table-name
Amazon Athena オフラインストアのソフト削除とハード削除の例
次の手順では、Amazon Athena を使用して、OfflineStore
Iceberg テーブルからレコードをソフト削除してからハード削除します。これは、 で削除するレコードOfflineStore
が削除されたレコードマーカーであることを前提としています。で削除されたレコードマーカーの詳細についてはOfflineStore
、「」を参照してくださいオンラインストアからレコードを削除する。
-
Iceberg テーブル名 を取得します
。Iceberg テーブル名を取得する方法については、「」を参照してくださいIceberg テーブル名を取得する。iceberg-table-name
-
DELETE
コマンドを実行して、Iceberg テーブルの最新バージョン (またはスナップショット) にレコードが含まれないようにOfflineStore
、 のレコードをソフト削除します。次の例では、is_deleted
が であるレコード'True'
と、それらのレコードの以前のイベント時間バージョン を削除します。削除を制限するために、他の機能に基づいて条件を追加できます。AthenaDELETE
で を使用する方法の詳細については、Athena ユーザーガイドDELETE
の「」を参照してください。DELETE FROM
iceberg-table-name
WHERErecord-id-feature-name
IS IN ( SELECTrecord-id-feature-name
FROMiceberg-table-name
WHERE is_deleted = 'True')ソフト削除されたレコードは、タイムトラベルを実行して以前のファイルバージョンでも表示できます。タイムトラベルの実行については、Athena ユーザーガイドの「Iceberg テーブルデータのクエリ」と「タイムトラベルの実行」を参照してください。
-
Iceberg テーブルの以前のバージョンからレコードを削除して、 からレコードをハード削除します
OfflineStore
。-
OPTIMIZE
コマンドを実行して、関連する削除ファイルのサイズと数に基づいて、データファイルをより最適化されたレイアウトに書き換えます。Iceberg テーブルと構文の最適化の詳細については、Athena ユーザーガイドの「Iceberg テーブルの最適化」を参照してください。OPTIMIZE
iceberg-table-name
REWRITE DATA USING BIN_PACK -
(オプション、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
' ) -
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
プロシージャを使用します。
-