问题描述:
最近在学习doris,今天创建了张动态分区表,建表语句的配置参数如下:
PROPERTIES(
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "2",
"replication_allocation" = "tag.location.default: 1"
);
"dynamic_partition.end" = "3"参数设置的是3,dynamic_partition.start这个参数没有设置,所以建完表之后,执行
SHOW PARTITIONS FROM ods_test_d
查看目前的分区数如下:
今天是20230720,根据参数规则生成了这几个分区。
随便插了2条数据都没问题,然后造了一条20230724的数据,插入报错,报错如下:
SQL 错误 [5025] [HY000]: Insert has filtered data in strict mode, tracking_url=
打开这个路径发现报错原因是因为表中没有这个分区,如下图:
恍然大悟!!!!
结论:
Doris动态分区表并不是根据插入的数据中的动态分区键的值而新增对应的分区,而是根据"dynamic_partition.end" = "3"这个参数的配置,每天创建未来N天的分区,我这里配置的是3,所以今天创建了20230720~20230723的分区,至于20230724的分区要等到明天才会创建,具体明天会不会创建,我明天再验证下。
有没有哪个小蠢蛋跟我一样/(ㄒoㄒ)/~~
附上Doris官方文档的地址:
=========================================================================
后记
第二天确实自动创建了20230724的分区