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
语句不提供一次性删除所有分区的单一语法,也不支持用于指定要删除的分区范围的筛选条件。
作为解决方法,您可以在脚本中使用 Amazon Glue API GetPartitions 和 BatchDeletePartition 操作。GetPartitions
操作支持复杂的筛选条件表达式,就像 SQL WHERE
表达式中的筛选条件表达式一样。使用 GetPartitions
创建要删除的分区的筛选列表后,您可以使用 BatchDeletePartition
操作批量删除 25 个分区。
重要
由于已知问题,如果为 ALTER
TABLE DROP PARTITION
语句指定的分区无效,则将在 Amazon Glue 中删除该表的所有分区。例如,以下语句将删除表 my_table
的所有分区,即使指定分区不存在也是如此。要解决该问题,确保在运行 ALTER TABLE DROP PARTITION
语句之前正确输入分区信息。
ALTER TABLE
my_table
DROP IF EXISTS PARTITION(zzz='');