持续创作,加速成长!这是我参与「掘金日新计划 · 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") |