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='');