添加分区

添加分区的语法格式,如下所示:
ALTER TABLE TABLE_NAME ADD [IF NOT EXISTS] PARTITION partition_spec
partition_spec:(partition_col1 = partition_col_value1, partition_col2 = partiton_col_value2, ...)
说明
  • 仅支持新增分区,不支持新增分区字段。
  • 如果未指定if not exists而同名的分区已存在,则出错返回。
  • 目前MaxCompute单表支持的分区数量上限为6万。
  • 对于多级分区的表,如果想添加新的分区,必须指明全部的分区值。

示例如下:

假设为表sale_detail添加一个分区,如下所示:
alter table sale_detail add if not exists partition (sale_date='201312', region='hangzhou');
-- 成功添加分区,用来存储2013年12月杭州地区的销售记录。
alter table sale_detail add if not exists partition (sale_date='201312', region='shanghai');
-- 成功添加分区,用来存储2013年12月上海地区的销售记录。
alter table sale_detail add if not exists partition(sale_date='20111011');
-- 仅指定一个分区sale_date,出错返回
alter table sale_detail add if not exists partition(region='shanghai');
-- 仅指定一个分区region,出错返回

删除分区

删除分区的语法格式,如下所示:
ALTER TABLE TABLE_NAME DROP [IF EXISTS] PARTITION partition_spec;
partition_spec:(partition_col1 = partition_col_value1, partition_col2 = partiton_col_value2, ...)
说明
如果分区不存在且未指定if exists,则报错返回。

示例如下:

假设从表sale_detail中删除一个分区,如下所示:
alter table sale_detail drop if exists partition(sale_date='201312',region='hangzhou'); 
-- 成功删除2013年12月杭州分区的销售。

添加列

添加列的语法格式,如下所示:
ALTER TABLE table_name ADD COLUMNS (col_name1 type1, col_name2 type2...)
说明
添加的新列不支持指定顺序,默认在最后一列。

修改列名

修改列名的语法格式,如下所示:
ALTER TABLE table_name CHANGE COLUMN old_col_name RENAME TO new_col_name;
说明
  • old_col_name必须是已存在的列。
  • 表中不能有名为new_col_name的列。

修改列、分区注释

修改列、分区注释的语法格式,如下所示:
ALTER TABLE table_name CHANGE COLUMN col_name COMMENT comment_string;
说明
COMMENT内容最长为1024字节。

同时修改列名及列注释

同时修改列名及列注释的语法格式,如下所示:
ALTER TABLE table_name CHANGE COLUMN old_col_name new_col_name column_type COMMENT column_comment;
说明
  • old_col_name必须是已存在的列。
  • 表中不能有名为new_col_name的列。
  • COMMENT内容最长为1024字节。

修改表、分区的修改时间

MaxCompute SQL提供touch操作用来修改分区的LastDataModifiedTime。效果会将分区的LastDataModifiedTime修改为当前时间。

修改表、分区的修改时间的语法格式,如下所示:
ALTER TABLE table_name TOUCH PARTITION(partition_col='partition_col_value', ...);
说明
  • table_name或partition_col不存在,则报错返回。
  • 指定的partition_col_value不存在,则报错返回。
  • 此操作会改变表的LastDataModifiedTime的值,此时,MaxCompute会认为表或分区的数据有变动,生命周期的计算会重新开始。

修改分区值

MaxCompute SQL支持通过rename操作更改对应表的分区值。

修改分区值的语法格式,如下所示:
ALTER TABLE table_name PARTITION (partition_col1 = partition_col_value1, partition_col2 = partiton_col_value2, ...) 
RENAME TO PARTITION (partition_col1 = partition_col_newvalue1, partition_col2 = partiton_col_newvalue2, ...);
说明
  • 不支持修改分区列列名,只能修改分区列对应的值。
  • 修改多级分区的一个或者多个分区值,多级分区的每一级的分区值都必须写上。