ALTER TABLE ADD PARTITION - Amazon Athena

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

ALTER TABLE ADD PARTITION

テーブルのパーティション列を 1 つ以上作成します。各パーティションは、1 つ以上の異なる列名/値の組み合わせで構成されます。指定した組み合わせごとに別個のデータディレクトリが作成されます。これにより、クエリパフォーマンスが向上する場合があります。パーティション分割された列は、テーブルのデータ自体内には存在しないため、テーブル内の列自体と同じ名前を使用すると、エラーになります。詳細については、「Athena でのデータのパーティション化」を参照してください。

Athena では、テーブルとそのパーティションが同じデータ形式を使用する必要がありますが、スキーマは異なる場合があります。詳細については、「」を参照してくださいパーティションがあるテーブルを更新する

IAM ポリシーで必要とされるリソースレベルのアクセス許可 (glue:CreatePartition を含む) については、「AWS Glue API アクセス許可: アクションとリソースのリファレンス」および「AWS Glue Data Catalog のデータベースとテーブルへのきめ細かなアクセス」を参照してください。Athena を使用する際のアクセス許可に関するトラブルシューティングについては、「権限」トピックの「Athena のトラブルシューティング」セクションを参照してください。

概要

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION (partition_col1_name = partition_col1_value [,partition_col2_name = partition_col2_value] [,...]) [LOCATION 'location1'] [PARTITION (partition_colA_name = partition_colA_value [,partition_colB_name = partition_colB_value [,...])] [LOCATION 'location2'] [,...]

パラメータ

パーティションを追加するときは、パーティションの 1 つ、または複数の列名/値ペアと、そのパーティションのデータファイルが格納されている Amazon S3 パスを指定します。

[IF NOT EXISTS]

同じ定義のパーティションが既に存在する場合、エラーを抑制します。

PARTITION (partition_col_name = partition_col_value [,...])

ユーザー指定の列名/値の組み合わせでパーティションを作成します。列のデータ型が文字列である場合に限り、partition_col_value を文字列の文字で囲みます。

[LOCATION 'location']

前のステートメントで定義したパーティションの保存先のディレクトリを指定します。データが Hive スタイルのパーティショニング (pk1=v1/pk2=v2/pk3=v3) を使用する場合、LOCATION 句はオプションです。Hive スタイルのパーティション化では、テーブルの場所、パーティションキー名、およびパーティションキー値からフル Amazon S3 URI が自動的に作成されます。詳細については、「Athena でのデータのパーティション化」を参照してください。

次の例では、Hive スタイルのパーティション化されたデータ用のテーブルに、1 つのパーティションを追加します。

ALTER TABLE orders ADD PARTITION (dt = '2016-05-14', country = 'IN');

次の例では、Hive スタイルのパーティション化されたデータ用のテーブルに、複数のパーティションを追加します。

ALTER TABLE orders ADD PARTITION (dt = '2016-05-31', country = 'IN') PARTITION (dt = '2016-06-01', country = 'IN');

テーブルが Hive スタイルのパーティション化されたデータ向けのものではない場合は、LOCATION 句が必要です。この句は、パーティションのデータが含まれるプレフィックスのフル Amazon S3 URI でなければなりません。

ALTER TABLE orders ADD PARTITION (dt = '2016-05-31', country = 'IN') LOCATION 's3://mystorage/path/to/INDIA_31_May_2016/' PARTITION (dt = '2016-06-01', country = 'IN') LOCATION 's3://mystorage/path/to/INDIA_01_June_2016/';

パーティションがすでに存在する場合にエラーを無視するには、次の例のように IF NOT EXISTS 句を使用します。

ALTER TABLE orders ADD IF NOT EXISTS PARTITION (dt = '2016-05-14', country = 'IN');

ゼロバイト _$folder$ ファイル

ALTER TABLE ADD PARTITION ステートメントを実行し、すでに存在するパーティションと正しくない Amazon S3 の場所を誤って指定すると、形式 partition_value_$folder$ のゼロバイトプレースホルダーが Amazon S3 に作成されます。これらのファイルは手動で削除する必要があります。

これを防ぐには、次の例のように、ALTER TABLE ADD PARTITION ステートメントで ADD IF NOT EXISTS 構文を使用します。

ALTER TABLE table_name ADD IF NOT EXISTS PARTITION […]