免费注册
帮助文档(华北一、二)

  • 创建分区变需要注意以下问题:

    确定分区策略:按照日期分区、按照数值分区、按照一个列表值分区

    选择需要做分区的列

    选择创建表格方式(heap表 ,append表、按列存储的表)

    6.1.1 按照日期创建分区表

    日期划分的分区表使用一个日期或时间戳列做为分区键值列。可以按天或者按月进行分析。

    您可以通过指定起始值(START),终止值(END)和增量子句(EVERY)指出分区的增量值, 让DW数据仓库来自动地生成分区。默认情况下,起始值总是包含的(闭区间),而终止 值是排除的(开区间)。例如:

    场景一:默认创建的分区表是heap表

     

    CREATE TABLE p_store_sales (id int, date date, prices decimal(7,2))

    DISTRIBUTED BY (id)

    PARTITION BY RANGE (date)

    ( START (date '2016-01-01') INCLUSIVE

    END (date '2017-01-01') EXCLUSIVE

    EVERY (INTERVAL '1 day') );

    场景二:创建appendonly的分区表

     

    CREATE TABLE p_store_sales (id int, date date, prices decimal(7,2))

    with (APPENDONLY=true ,compresslevel=5) DISTRIBUTED BY (id)

    PARTITION BY RANGE (date)

    ( START (date '2016-01-01') INCLUSIVE

    END (date '2017-01-01') EXCLUSIVE

    EVERY (INTERVAL '1 day') );

    场景三:创建列存储的分区表

     

    CREATE TABLE p_store_sales (id int, date date, prices decimal(7,2))

    with (APPENDONLY=true,ORIENTATION=column,compresslevel=5)

    DISTRIBUTED BY (id)

    PARTITION BY RANGE (date)

    ( START (date '2016-01-01') INCLUSIVE

    END (date '2017-01-01') EXCLUSIVE

    EVERY (INTERVAL '1 day') );

    场景四:创建带默认分区的分区表(一般情况不建议创建默认分区)

     
    CREATE TABLE p_store_sales (id int, date date, prices decimal(7,2)) 
    DISTRIBUTED BY (id) 
    PARTITION BY RANGE (date) 
    ( START (date '2016-01-01') INCLUSIVE 
    END (date '2017-01-01') EXCLUSIVE 
    EVERY (INTERVAL '1 day'), 
     DEFAULT PARTITION error);

    如果输入的数据不满足分区的 CHECK 约束条件,并且没有创建默认分区,数据将被拒绝插入。 默认分区能够保证在输入数据不满足分区时,能够将数据插入到默认分区。

    场景五:为每个分区指定独立的名:

     

    CREATE TABLE p_store_sales (id int, date date, prices decimal(7,2))

    DISTRIBUTED BY (id)

    PARTITION BY RANGE (date)

    (

      PARTITION Sep08 START (date '2016-09-01') INCLUSIVE ,

      PARTITION Oct08 START (date '2016-10-01') INCLUSIVE ,

      PARTITION Nov08 START (date '2016-11-01') INCLUSIVE ,

      PARTITION Dec08 START (date '2016-12-01') INCLUSIVE

      END (date '2017-01-01') EXCLUSIVE );

    除了最后一个分区外,其他分区的终止值不用指出。

    6.1.2 按照数值范围创建分区表

    使用数值范围的分区表,利用单独的数值类型列做为分区键值列。例如下面根据年龄范围做分区:

     

    CREATE TABLE p_members (id int, date date, age int,region char(1))

    DISTRIBUTED BY (id)

    PARTITION BY RANGE (age)

     ( START (1) END (100) EVERY (1),

      DEFAULT PARTITION extra );

    6.1.3按照列表值创建分区表

    使用列表值进行分区的表可以选用任何支持等值比较的数据类型列做为分区键值列。对于列表值分区来说,您必须为每一个要创建的分区指定对应的列表值。例如下面根据地区进行分区:

     

    CREATE TABLE p_members (id int, date date, age int,region char(2))

    DISTRIBUTED BY (id)

       PARTITION BY LIST (region)

       ( PARTITION shanghai VALUES ('SH'),

       PARTITION beijing VALUES ('BG'),

       DEFAULT PARTITION other );


文档是否已解决您的问题?

  已解决   未解决

如您有其它疑问,您也可以与我们技术专家联系探讨。

联系技术专家