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 GetPartitionsBatchDeletePartition動作。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='');