

# 各 Amazon S3 インクルードパスの単一のスキーマを作成する
<a name="crawler-grouping-policy"></a>

デフォルトでは、Amazon S3 に保存されたデータのテーブルをクローラーが定義するときに、データの互換性とスキーマの類似性の両方が考慮されます。考慮されるデータ互換性要因には、データが同じ形式 (JSON など) かどうか、同じ圧縮タイプ (GZIP など) かどうか、Amazon S3 パスの構造、他のデータ属性などです。スキーマの類似性は、別個の Amazon S3 オブジェクトのスキーマがどれくらい似ているかの尺度です。

このオプションを説明するため、インクルードパス `s3://amzn-s3-demo-bucket/table1/` を使用してクローラーを定義するとします。クローラーが実行されると、次の特性を持つ 2 つの JSON ファイルが検索されます。
+ **ファイル 1** – `S3://amzn-s3-demo-bucket/table1/year=2017/data1.json`
+ *ファイルのコンテンツ* – `{“A”: 1, “B”: 2}`
+ *スキーマ* – `A:int, B:int`
+ **ファイル 2** – `S3://amzn-s3-demo-bucket/table1/year=2018/data2.json`
+ *ファイルのコンテンツ* – `{“C”: 3, “D”: 4}`
+ *スキーマ* – `C: int, D: int`

デフォルトでは、スキーマの類似性が十分ではないため、クローラーは `year_2017` および `year_2018` という 2 つのテーブルを作成します。ただし、オプション [**Create a single schema for each S3 path (各 S3 パスの単一のスキーマを作成する)**] を選択し、データに互換性がある場合、クローラーは 1 つのテーブルを作成します。テーブルにはスキーマ `A:int,B:int,C:int,D:int` と `partitionKey` `year:string` があります。

------
#### [ AWS マネジメントコンソール ]

1. AWS マネジメントコンソール にサインインし、AWS Glue コンソール ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) を開きます。

1. **[Data Catalog]** で **[クローラー]** を選択します。

1. 新しいクローラーを設定するときは、**[出力およびスケジューリング]** で、[詳細オプション] の **[各 S3 パスの単一のスキーマを作成する]** オプションを選択します。

------
#### [ AWS CLI ]

可能な場合は、`CombineCompatibleSchemas` へのクローラーを共通テーブル定義に設定できます。このオプションを使用しても、クローラーはデータ互換性を考慮に入れますが、指定されたインクルードパスで Amazon S3 オブジェクトを評価するときに特定のスキーマの類似性を無視します。

AWS CLI を使用してクローラーを設定する場合は、以下の設定オプションを設定します。

```
aws glue update-crawler \
   --name myCrawler \
   --configuration '{"Version": 1.0, "Grouping": {"TableGroupingPolicy": "CombineCompatibleSchemas" }}'
```

------
#### [ API ]

API を使用してクローラーを設定する場合は、以下の設定オプションを設定します。

 クローラー API で次の JSON オブジェクトの文字列表現を使用して `Configuration` フィールドを設定します。

```
{
   "Version": 1.0,
   "Grouping": {
      "TableGroupingPolicy": "CombineCompatibleSchemas" }
}
```

------