1:Doris建动态分区表的规则(部分规则,详情可看创建动态分区properties设置)
1.1:"dynamic_partition.enable" = "true", -- 是否开启动态分区
1.2:"dynamic_partition.time_unit" = "DAY", -- 动态分区调度单位
1.2:"dynamic_partition.end" = "3", -- 提前创建分区数
1.3:"dynamic_partition.prefix" = "p", -- 分区前缀
假如在2024-10-30号创建一张动态分区表 那么它的分区如下:
会自动创建p20241030及预创建未来三天的分区,分区的范围为:
p20241030 [2024-10-30,2024-10-31)
p20241101 [2024-11-01,2024-11-02)
均为左闭右开区间
但是实际很多情况下都需要创建历史分区用来做离线T+1同步
2:为动态分区创建历史分区的步骤
一:手动将动态分区转为手动分区模式
alter table tb_name set ("dynamic_partition.enable" = "false";)
二:只创建一个历史分区的情况下,该历史数据包含所有时间的数据
alter table tb_name add partition p20241029 values less than ("2024-10-30"); -- 即添加p20241029分区,该分区存放pt< '2024-10-30'的所有数据
三:如果需要创建多个历史分区的情况下,需要注意分区的时段冲突问题
-- 比如说现在需要添加 p20241029 p20241028 p20241027三个历史分区 -- 首先假如p20241027为以上包含< '2024-10-28'的所有数据的情况 alter table tb_name add partition p20241027 values less than ("2024-10-28"); -- 为了避免时段冲突。接下来的两个分区创建如下 alter table tb_name add partition p20241028 values [("2024-10-28"),("2024-10-29")); alter table tb_name add partition p20241029 values [("2024-10-29"),("2024-10-30"));
四:修改完之后记得开启动态分区模式
alter table tb_name set ("dynamic_partition.enable" = "true");