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

ALTER TABLE ADD PARTITION

为表创建一个或多个分区列。每个分区包含一个或多个不同的列名称/值组合。将会为每个指定的组合创建一个单独的数据目录,这在某些情况下可提高查询性能。分区列在表数据本身中不存在,因此如果您使用的列名称与表本身的列同名,则会出现错误。有关更多信息,请参阅分区数据

在 Athena 中,一个表及其分区必须使用相同的数据格式,但它们的架构可以不同。有关更多信息,请参阅包含分区的表中的更新

摘要

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION (partition_col1_name = partition_col1_value [,partition_col2_name = partition_col2_value] [,...]) [LOCATION 'location1'] [PARTITION (partition_colA_name = partition_colA_value [,partition_colB_name = partition_colB_value [,...])] [LOCATION 'location2'] [,...]

参数

添加分区时,您可以为该分区指定一个或多个列名称/值对,以及该分区的数据文件所在的 Amazon S3 路径。

[IF NOT EXISTS]

如果已存在具有相同定义的分区,则会导致错误被隐藏。

PARTITION (partition_col_name = partition_col_value [,...])

创建一个具有指定列名称/值组合的分区。仅当列的数据类型为字符串时,才将 partition_col_value 包含在字符串字符中。

[LOCATION 'location']

指定存储前述语句所定义的分区的目录。

示例

ALTER TABLE orders ADD PARTITION (dt = '2016-05-14', country = 'IN');
ALTER TABLE orders ADD PARTITION (dt = '2016-05-14', country = 'IN') PARTITION (dt = '2016-05-15', country = 'IN');
ALTER TABLE orders ADD PARTITION (dt = '2016-05-14', country = 'IN') LOCATION 's3://mystorage/path/to/INDIA_14_May_2016/' PARTITION (dt = '2016-05-15', country = 'IN') LOCATION 's3://mystorage/path/to/INDIA_15_May_2016/';