ALTER TABLE DROP PARTITION - Amazon Athena

ALTER TABLE DROP PARTITION

名前付きテーブルの指定したパーティションを削除します。

概要

ALTER TABLE table_name DROP [IF EXISTS] PARTITION (partition_spec) [, PARTITION (partition_spec)]

パラメータ

[IF EXISTS]

指定したパーティションが存在しない場合、エラーメッセージを抑制します。

PARTITION (partition_spec)

partition_spec は、列名/値の組み合わせを partition_col_name = partition_col_value [,...] という形式で指定します。

ALTER TABLE orders DROP PARTITION (dt = '2014-05-14', country = 'IN');
ALTER TABLE orders DROP PARTITION (dt = '2014-05-14', country = 'IN'), PARTITION (dt = '2014-05-15', country = 'IN');

メモ

ALTER TABLE DROP PARTITION ステートメントには、すべてのパーティションを一括に削除するための単一的な構文は存在しません。また、削除するパーティションの範囲を指定するための、フィルタリング条件もサポートされていません。

この点の回避策として、スクリプト内で、AWS Glue API の GetPartitions および BatchDeletePartition アクションを使用できます。GetPartitions アクションでは、SQL の WHERE 式のような、複雑なフィルター表現がサポートされます。GetPartitions を使用して、削除対象のパーティションについてフィルタリングされたリストを作成した後は、BatchDeletePartition アクションにより、25 個までのパーティションをまとめて削除できます。

重要

既知の問題により、ALTER TABLE DROP PARTITION ステートメントに無効なパーティションを指定すると、テーブルのすべてのパーティションが AWS Glue で削除されます。例えば、次のステートメントは、指定されたパーティションが存在しない場合でも、テーブル my_table のすべてのパーティションを削除します。回避策として、ALTER TABLE DROP PARTITION ステートメントを実行する前にパーティション情報を正しく入力してください。

ALTER TABLE my_table DROP IF EXISTS PARTITION(zzz='');