本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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='');