添加分區

添加分區的文法格式,如下所示:
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, ...);
说明
  • 不支援修改分區列列名,只能修改分區列對應的值。
  • 修改多級分區的一個或者多個分區值,多級分區的每一級的分區值都必須寫上。