ALTER TABLE DROP PARTITION - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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