

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

# Amazon SageMaker Feature Store オフラインストアのデータ形式
<a name="feature-store-offline"></a>

Amazon SageMaker Feature Store は、オフラインストアの AWS Glue および Apache Iceberg テーブル形式をサポートしています。新しい特徴量グループを作成するときに、テーブル形式を選択できます。 はデフォルトの形式 AWS Glue です。

 Amazon SageMaker Feature Store オフラインストアのデータは、アカウント内 Simple Storage Service (Amazon S3) バケットに保存されます。`PutRecord` を呼び出すと、データは 15 分以内に Amazon S3 にバッファされ、バッチ処理され、書き込まれます。Feature Store は、オフラインストアにデータを書き込む際に Parquet ファイル形式のみをサポートします。具体的には、オフラインストアにデータが書き込まれると、データは Amazon S3 バケットから Parquet 形式で取得できます。各ファイルには複数の `Record` を含めることができます。

Iceberg 形式の場合、Feature Store は、オフラインストアデータの保存に使用しているのと同じ Amazon S3 バケットにテーブルのメタデータを保存します。`metadata` プレフィックスの下にあります。

 Feature Store では [OfflineStoreConfig.S3StorageConfig.ResolvedOutputS3Uri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3StorageConfig.html#sagemaker-Type-S3StorageConfig-ResolvedOutputS3Uri) フィールドが開示されており、[DescribeFeatureGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeFeatureGroup.html) API コールで見つけることができます。これは、特定の特徴グループのファイルが書き込まれる S3 のパスです。

オフラインストアでレコードが保持される場合、Feature Store は各レコードに次の追加フィールドを加えます。
+  **api\_invocation\_time** - サービスが `PutRecord` または `DeleteRecord` の呼び出しを受信した時点のタイムスタンプ。マネージド型の取り込み (Data Wrangler など) を使っている場合、これはデータがオフラインストアに書き込まれた時点のタイムスタンプです。
+  **write\_time** - オフラインストアにデータが書き込まれた時点のタイムスタンプ。タイムトラベル関連クエリの作成に使うことができます。
+  **is\_deleted** - デフォルトは `False` です。`DeleteRecord` が呼び出されると、オフラインストアでは新しい `Record` が `RecordIdentifierValue` に挿入され、`True` に設定されます。

## Amazon SageMaker Feature Store のオフラインストア URI 構造
<a name="feature-store-offline-URI-structure"></a>

以下の例の `amzn-s3-demo-bucket` は、アカウント内の Amazon S3 バケット、`{{example-prefix}}` はプレフィックスの例、`{{111122223333}}` はアカウント ID、`{{AWS リージョン}}` はリージョン、`{{feature-group-name}}` は特徴量グループの名前を表します。

**AWS Glue テーブル形式**

 AWS Glue テーブル形式を使用して保存されたオフラインストア内のレコードは、イベント時間ごとに時間単位のパーティションに分割されます。分割スキームは設定できません。次の URI 構造は AWS Glue 形式を使用した Parquet ファイルの構成を示しています。

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS リージョン}}/offline-store/{{feature-group-name}}-{{feature-group-creation-time}}/data/year={{year}}/month={{month}}/day={{day}}/hour={{hour}}/{{timestamp_of_latest_event_time_in_file}}_{{16-random-alphanumeric-digits}}.parquet
```

次の例は、`{{feature-group-name}}` が `customer-purchase-history-patterns` であるファイルの Parquet ファイルの出力場所を示しています。

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS リージョン}}/offline-store/customer-purchase-history-patterns-1593511200/data/year=2020/month=06/day=31/hour=00/20200631T064401Z_108934320012Az11.parquet
```

**Iceberg テーブル形式**

Iceberg テーブル形式で保存されたオフラインストアのレコードは、イベント時間ごとに日にち単位で分割されます。分割スキームは設定できません。次の URI 構造は、Iceberg テーブル形式で保存されたデータファイルの構成を示しています。

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS リージョン}}/offline-store/{{feature-group-name}}-{{feature-group-creation-time}}/data/{{8-random-alphanumeric-digits}}/{{event-time-feature-name}}_trunc={{event-time-year}}-{{event-time-month}}-{{event-time-day}}/timestamp-of-latest-event-time-in-file_16-random-alphanumeric-digits.parquet
```

次の例は、`{{feature-group-name}}` が `customer-purchase-history-patterns` であり、`{{event-time-feature-name}}` が `EventTime` であるファイルの Parquet ファイルの出力場所を示しています。

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS リージョン}}/offline-store/customer-purchase-history-patterns-1593511200/data/0aec19ca/EventTime_trunc=2022-11-09/20221109T215231Z_yolTtpyuWbkaeGIl.parquet
```

次の例は、Iceberg テーブル形式で保存されたデータファイルのメタデータファイルの場所です。

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS リージョン}}/offline-store/{{feature-group-name}}-{{feature-group-creation-time}}/metadata/
```