View a markdown version of this page

特徴量グループへの特徴量とレコードの追加 - Amazon SageMaker AI

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

特徴量グループへの特徴量とレコードの追加

Amazon SageMaker 特徴量ストア API または コンソールを使用して、特徴量グループを更新したり説明を追加したり、特徴量グループに特徴量やレコードを追加したりできます。特徴量グループはデータを含むオブジェクトで、特徴量はテーブルの列を説明します。特徴量グループに特徴量を追加すると、実質的にはテーブルに列が追加されます。特徴量グループに新しいレコードを追加すると、特定のレコード識別子に関連付けられた特徴量の値を入力することになります。特徴量ストアの概念の詳細については、「Feature Store の概念」を参照してください。

特徴量グループに正常に特徴量を追加すると、それらの特徴量を削除することはできません。追加した特徴量によってレコードにデータが追加されることはありません。新しいレコードを特徴量グループに追加するか、PutRecord または BatchWriteRecord API オペレーションを使用して上書きできます。レコードを更新、説明、特徴量グループに追加する例については、「コードの例」を参照してください。

コンソールを使用して、特徴量グループに特徴量を追加できます。コンソールを使用して特徴量グループを更新する方法の詳細は、「コンソールから特徴量グループを更新する」を参照してください。

以下のセクションでは、Feature Store API を使用して特徴量グループに特徴量を追加する方法の概要を説明し、例を挙げて説明します。API を使用すると、特徴量グループを更新した後にレコードを追加または上書きすることもできます。

トピック

API

UpdateFeatureGroup 操作を使用して、特徴量グループに特徴量を追加します。

DescribeFeatureGroup オペレーションを使用して、機能が正常に追加されたかどうかを確認できます。

レコードを追加または上書きするには、PutRecord オペレーションを使用します。1 回のリクエストで最大 25 個のレコードを書き込むには、 BatchWriteRecordオペレーションを使用します。

レコードに対して行った更新を確認するには、GetRecord オペレーションを使用します。複数のレコードに対して行った更新を確認するには、BatchGetRecord オペレーションを使用します。更新が表示されるまでに最大 5 分かかる場合があります。

次のセクションのサンプルコードを使うと、 AWS SDK for Python (Boto3)を使用して特徴量やレコードを追加する流れを追うことができます。

コードの例

サンプルコードを使い、次のプロセスを順を追って説明します。

  1. 特徴量グループへの特徴量の追加

  2. 正常に追加されたことを確認する

  3. 特徴量グループへのレコードの追加

  4. 特徴量グループに複数のレコードを一括で追加する

  5. 正常に追加されたことを確認する

ステップ 1: 特徴量グループへの特徴量の追加

次のコードでは、UpdateFeatureGroup 操作を使用して特徴量グループに新しい特徴量を追加します。Feature Store をセットアップし、特徴量グループを作成していることを前提としています。使用開始の詳細については、「Feature Store サンプルノートブックの概要」を参照してください。

import boto3 sagemaker_client = boto3.client("sagemaker") sagemaker_client.update_feature_group( FeatureGroupName=feature_group_name, FeatureAdditions=[ {"FeatureName": "new-feature-1", "FeatureType": "Integral"}, {"FeatureName": "new-feature-2", "FeatureType": "Fractional"}, {"FeatureName": "new-feature-3", "FeatureType": "String"} ] )

次のコードでは、DescribeFeatureGroup 操作を使用して更新の状態を確認します。LastUpdateStatus フィールドが の場合Successful、機能が正常に追加されました。

sagemaker_client.describe_feature_group( FeatureGroupName=feature_group_name )

ステップ 2: 特徴量グループへの新しいレコードの追加

次のコードでは、 PutRecordオペレーションを使用して、作成した特徴量グループにレコードを追加します。

record_identifier_value = 'new_record' sagemaker_featurestore_runtime_client = boto3.client("sagemaker-featurestore-runtime") sagemaker_runtime_client.put_record( FeatureGroupName=feature_group_name, Record=[ { 'FeatureName': "record-identifier-feature-name", 'ValueAsString': record_identifier_value }, { 'FeatureName': "event-time-feature", 'ValueAsString': "timestamp-that-feature-store-returns" }, { 'FeatureName': "new-feature-1", 'ValueAsString': "value-as-string" }, { 'FeatureName': "new-feature-2", 'ValueAsString': "value-as-string" }, { 'FeatureName': "new-feature-3", 'ValueAsString': "value-as-string" }, ] )

GetRecord オペレーションを使用して、追加した特徴量のデータがない特徴量グループ内のレコードを確認します。PutRecord オペレーションを使用して、追加した機能のデータがないレコードを上書きできます。

ステップ 3: BatchWriteRecord を使用して複数のレコードを一括で追加する

複数のレコードを追加または上書きするには、BatchWriteRecord オペレーションを使用します。レコードを自動的に期限切れにするには、 を指定しますTtlDuration。

response = sagemaker_featurestore_runtime_client.batch_write_record( Entries=[ { 'FeatureGroupName': feature_group_name, 'Record': [ {'FeatureName': "record-identifier-feature-name", 'ValueAsString': 'record_1'}, {'FeatureName': "event-time-feature", 'ValueAsString': "2024-01-01T00:00:00Z"}, {'FeatureName': "new-feature-1", 'ValueAsString': "value-1"}, ], 'TtlDuration': {'Unit': 'Hours', 'Value': 24} }, { 'FeatureGroupName': feature_group_name, 'Record': [ {'FeatureName': "record-identifier-feature-name", 'ValueAsString': 'record_2'}, {'FeatureName': "event-time-feature", 'ValueAsString': "2024-01-01T00:00:00Z"}, {'FeatureName': "new-feature-1", 'ValueAsString': "value-2"}, ] } ] ) # Check for failed records. if response['Errors']: for error in response['Errors']: print(f"Error: {error['ErrorCode']} - {error['ErrorMessage']}") # Retry unprocessed entries. unprocessed = response.get('UnprocessedEntries', []) while unprocessed: response = sagemaker_featurestore_runtime_client.batch_write_record(Entries=unprocessed) unprocessed = response.get('UnprocessedEntries', [])

レスポンスには、失敗したレコードErrorsのリストと、再試行できるレコードUnprocessedEntriesのリストが含まれます。

注記

TtlDuration は、レコードの に対して計算されますEventTime。EventTime プラス TtlDurationが過去のものである場合、Amazon SageMaker Feature Store はレコードをオンラインストアに保存しません。