开发者社区 > 数据库 > 数据仓库 > 正文

云数据仓库ADB里怎么创建分区表?

云数据仓库ADB里怎么创建分区表?453575696] Not a partition hive table 。

展开
收起
小小鹿鹿鹿 2024-01-17 22:18:45 151 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在云数据仓库ADB中,创建分区表需要使用CREATE TABLE语句,并在语句中在云数据仓库ADB中,创建分区表需要使用CREATE TABLE语句,并在语句中指定PARTITIONED BY子句来定义分区键和分区类型。具体步骤如下:

    1. 确定分区键:首先需要确定用于分区的列,通常选择能够唯一标识数据的列作为分区键。例如,如果有一个销售订单表,可以按照订单日期进行分区,那么订单日期就可以作为分区键。

    2. 确定分区类型:根据实际需求选择合适的分区类型。常见的分区类型包括RANGE、LIST、HASH等。例如,如果按照订单日期进行分区,可以选择RANGE分区类型,将订单日期划分为不同的区间。

    3. 编写SQL语句:使用CREATE TABLE语句创建分区表,并在语句中指定PARTITIONED BY子句来定义分区键和分区类型。例如:

      CREATE TABLE orders (order_id INT, order_date DATE, customer_id INT)
      PARTITIONED BY (partition_date DATE);
      

      在这里,我们创建了一个名为orders的表,包含三个列:order_id、order_date和customer_id。同时,我们使用PARTITIONED BY子句定义了分区键为order_date,并选择了RANGE分区类型。

    4. 添加分区:在创建完分区表后,可以使用ALTER TABLE语句来添加新的分区。例如:

      ALTER TABLE orders ADD PARTITION (PARTITION p20220101 VALUES LESS THAN ('2022-02-01'));
      

      在这里,我们添加了一个名为p20220101的分区,将订单日期小于'2022-02-01'的数据存储在这个分区中。

    需要注意的是,在创建分区表时需要确保每个分区键的值都是唯一的,否则会导致数据插入失败或者查询结果不正确。

    2024-01-18 13:15:26
    赞同 展开评论 打赏
  • 创建分区表时,需要在CREATE TABLE语句中使用PARTITIONED BY参数指定分区列,例如:
    CREATE TABLE my_partitioned_table (
    id INT,
    date DATE,
    data STRING
    )
    PARTITIONED BY (date);
    在这个例子中,我们创建了一个名为my_partitioned_table的分区表,其中包含id、date和data三列,而date被用作分区列。这意味着数据会根据date字段的值进行分区存储。
    对于阿里云ADB数据库,在创建OSS外部表作为分区表时,需要指定LOCATION为分区的上一级目录,并且如果该路径不存在,可以设置TABLE_PROPERTIES中的auto.create.location=true自动创建OSS路径。
    同时,在向分区表插入数据后,可能需要手动执行BUILD TABLE命令来确保分区生效以及对实时写入的数据进行合并、构建索引等操作。
    另外,ADB MySQL版支持通过LIFECYCLE N管理表的生命周期,可以按照天数自动删除过期的分区数据,例如LIFECYCLE 365表示每个分区最多保留365天的数据。需要注意的是,分区键不支持修改,若需更改,需要采取相应步骤(如重建表)。同时,二级分区是在Shard级别而非整张表级别进行管理,并由后台异步任务清理过期分区。此回答来自钉群云数据仓库ADB-开发者群。

    2024-01-18 10:23:59
    赞同 展开评论 打赏
  • 分区表又称普通表,用于存储业务数据的度量值。

    AnalyticDB MySQL版根据分布键将数据打散在各个数据节点上。每个节点再根据分区键将数据文件拆分为不同的文件。如果业务明确有增量数据导入需求,创建分区表时可以同时指定分布键和分区键,来实现数据的增量同步。

    云原生数据仓库AnalyticDB MySQL版支持通过CREATE TABLE创建表,也支持通过CTAS将查询到的数据写入新表中。

    CREATE TABLE [IF NOT EXISTS] table_name
      ({column_name column_type [column_attributes] [ column_constraints ] [COMMENT 'string']
      | table_constraints}
       [, ... ]  )
       table_attribute
       [partition_options]
       [storage_policy]
       [block_size]
       [engine]
       [rt_engine]
       [table_properties]
    [AS] query_expression
       COMMENT 'string'
    
    column_attributes:
       [DEFAULT default_expr]
       [AUTO_INCREMENT]
    
    column_constraints:
       [{NOT NULL|NULL} ]
       [PRIMARY KEY]
    
    table_constraints:
       [{INDEX|KEY} [index_name] (column_name,...)]
       [PRIMARY KEY [index_name] (column_name,...)]
       [CLUSTERED KEY [index_name] (column_name,...)]
    
    
    table_attribute:
       DISTRIBUTED BY HASH(column_name,...) | DISTRIBUTED BY BROADCAST
    
    partition_options:
      PARTITION BY 
            {VALUE(column_name) | VALUE(date_format(column_name, ?))}
      LIFECYCLE N
    
    storage_policy:
      STORAGE_POLICY= 'HOT'|'COLD'|'MIXED' [hot_partition_count=N]
    
    block_size:
      BLOCK_SIZE= VALUE
    
    engine:
      ENGINE= 'XUANWU'
    
    rt_engine:
      RT_ENGINE= 'COLUMNSTORE'
    
    table_properties:
      TABLE_PROPERTIES = '{"format":"columnstore"}'
    

    image.png

    ——参考来源于阿里云官方文档

    2024-01-18 00:07:09
    赞同 展开评论 打赏

阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。

相关产品

  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 相关电子书

    更多
    消电行业数据中台解决方案白皮书 立即下载
    (终极版)2020阿里云金融数据中台报告 立即下载
    2020年中国乳制品行业数据中台研究报告 立即下载