开发者社区 问答 正文

MaxCompute合并分区的语法是什么?

MaxCompute合并分区的语法是什么?

展开
收起
游客qzzytmszf3zhq 2021-12-08 17:53:00 635 分享 版权
1 条回答
写回答
取消 提交回答
  • ALTER TABLE <tableName> MERGE [IF EXISTS] PARTITION(<predicate>) [, PARTITION(<predicate2>) ...] OVERWRITE PARTITION(<fullPartitionSpec>) [PURGE];
    
    -- 示例:
    +------------+------------+------------+------------+
    | value      | ds         | hh         | mm         |
    +------------+------------+------------+------------+
    | 1          | 20181101   | 00         | 00         |
    | 1          | 20181101   | 00         | 10         |
    | 1          | 20181101   | 10         | 00         |
    | 1          | 20181101   | 10         | 10         |
    +------------+------------+------------+------------+
    -- 合并所有满足hh='00' 的分区到hh='00',mm='00'中。
    ALTER TABLE intpstringstringstring MERGE PARTITION(hh='00') OVERWRITE PARTITION(ds='20181101', hh='00', mm='00');
    -- 合并后:
    ds=20181101/hh=00/mm=00
    ds=20181101/hh=10/mm=00
    ds=20181101/hh=10/mm=10
    
    -- MERGE PARTITIONS允许指定多个谓词条件,示例如下,指定到具体分区下,合并剩余分区。
    ALTER TABLE intpstringstringstring MERGE IF EXISTS 
    PARTITION(ds='20181101', hh='00', mm='00'), partition(ds='20181101', hh='10', mm='00'),  PARTITION(ds='20181101', hh='10', mm='10') 
    OVERWRITE PARTITION(ds='20181101', hh='00', mm='00') PURGE;
    
    
    2021-12-08 17:53:13
    赞同 展开评论