大数据分析——Apache Doris(四十四)

159 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

  • 表 tbl1 分区列 k1 类型为 DATETIME,创建一个动态分区规则。按星期分区,只保留最近2个星期的分区,并且预先创建未来2个星期的分区
操作步骤说明
1创建一张调度单位为周,保留最近两周的分区数据
 CREATE TABLE order_dynamic_partition2**(**id int **,**time date **,**money double **,**areaName varchar ( 50 **)****)**duplicate key ( id , time **)**PARTITION BY RANGE ( time )()DISTRIBUTED BY HASH ( id )  buckets 10PROPERTIES ("dynamic_partition.enable" = "true" ,    "dynamic_partition.time_unit" = "WEEK" ,    "dynamic_partition.start" = "-2" ,    "dynamic_partition.end" = "2" ,    "dynamic_partition.prefix" = "p" ,    "dynamic_partition.buckets" = "8");
 假设当前日期为 2020-05-29,是 2020 年的第 22 周。默认每周起始为星期一。则根于以上规则,tbl1 会产生以下分区:
 p2020_22: ["2020-05-25 00:00:00", "2020-06-01 00:00:00")p2020_23: ["2020-06-01 00:00:00", "2020-06-08 00:00:00")p2020_24: ["2020-06-08 00:00:00", "2020-06-15 00:00:00")
 其中每个分区的起始日期为当周的周一。同时,因为分区列 k1 的类型为 DATETIME,则分区值会补全时分秒部分,且皆为 0。在 2020-06-15,即第25周时,会删除2周前的分区,即删除 p2020_22。在上面的例子中,假设用户指定了周起始日为 "dynamic_partition.start_day_of_week" = "3",即以每周三为起始日。则分区如下:
 p2020_22: ["2020-05-27 00:00:00", "2020-06-03 00:00:00")p2020_23: ["2020-06-03 00:00:00", "2020-06-10 00:00:00")p2020_24: ["2020-06-10 00:00:00", "2020-06-17 00:00:00")
 即分区范围为当周的周三到下周的周二。注:2019-12-31 和 2020-01-01 在同一周内,如果分区的起始日期为 2019-12-31,则分区名为 p2019_53,如果分区的起始日期为 2020-01-01,则分区名为 p2020_01。
  • 表 tbl1 分区列 k1 类型为 DATE,创建一个动态分区规则。按月分区,不删除历史分区,并且预先创建未来2个月的分区。同时设定以每月3号为起始日。
操作步骤说明
1创建一张调度单位为月,不删除历史数据
 CREATE TABLE order_dynamic_partition3**(**id int **,**time date **,**money double **,**areaName varchar ( 50 **)****)**duplicate key ( id , time **)**PARTITION BY RANGE ( time )()DISTRIBUTED BY HASH ( id )  buckets 10PROPERTIES ("dynamic_partition.enable" = "true" ,    "dynamic_partition.time_unit" = "MONTH" ,    "dynamic_partition.end" = "2" ,    "dynamic_partition.prefix" = "p" ,    "dynamic_partition.buckets" = "8" ,    "dynamic_partition.start_day_of_month" = "3");
 假设当前日期为 2020-05-29。则根于以上规则,tbl1 会产生以下分区:
 p202005: ["2020-05-03", "2020-06-03")p202006: ["2020-06-03", "2020-07-03")p202007: ["2020-07-03", "2020-08-03")
 因为没有设置 dynamic_partition.start,则不会删除历史分区。假设今天为 2020-05-20,并设置以每月28号为起始日,则分区范围为:
 p202004: ["2020-04-28", "2020-05-28")p202005: ["2020-05-28", "2020-06-28")p202006: ["2020-06-28", "2020-07-28")