Doris 建表 partition key分区设置

官网文档说如果Partition列有多个。分区列值会按照顺序依次比较,最终得到对应的分区。
partition列:date(DATE 类型) 和 id(INT 类型)

p201701_1000:    [(MIN_VALUE,  MIN_VALUE), ("2017-02-01", "1000")   )
p201702_2000:    [("2017-02-01", "1000"),  ("2017-03-01", "2000")   )
p201703_all:     [("2017-03-01", "2000"),  ("2017-04-01", MIN_VALUE)) 
2017-01-01, 200     --> p201701_1000
2017-01-01, 2000    --> p201701_1000   
2017-02-01, 100     --> p201701_1000
2017-02-01, 2000    --> p201702_2000
2017-02-15, 5000    --> p201702_2000
2017-03-01, 2000    --> p201703_all
2017-03-10, 1       --> p201703_all
2017-04-01, 1000    --> 无法导入
2017-05-01, 1000    --> 无法导入

上面说(2017-01-01, 2000)是在p201701_1000分区上。
那按照语句p201701_1000不是应该是date<=2017-0-01 and id<=1000吗?
2000比1000大,那这个分区列加上id(INT 类型) 就没意义啊,只用到date(DATE 类型)。加上id列,对数据的划分更迷惑了。
如果两个条件不是and,那(2017-05-01, 1000)无法导入说明也不是 or 。
搞不懂。


2023-03-28更新
我的问题是为什么不干脆只按照date列分区?上面例子我想到唯一实际有用就是过滤了id为空的数据。
(官网有说NULL 值放在最小值的分区中,是不是只看首列?)
例子中的多列分区的目的是什么?有实际场景应用吗?

根据您提供的信息,可以理解为分区列的作用是对数据进行划分和排序。对于多个分区列的情况,按照分区列的顺序依次比较,最终得到对应的分区。

在您提供的例子中,如果一个数据行的date列小于或等于"2017-02-01",而且id列小于或等于"1000",那么该数据行将被划分到p201701_1000分区中。如果date列小于或等于"2017-03-01",而且id列小于或等于"2000",那么该数据行将被划分到p201702_2000分区中。如果一个数据行的date列小于或等于"2017-04-01",但是id列大于"2000",那么该数据行将被划分到p201703_all分区中。

因此,您提供的例子中,对于(2017-01-01, 2000),确实是被划分到了p201701_1000分区中。而对于(2017-05-01, 1000),由于无法满足任何一个分区的条件,因此无法导入。

总之,分区列的作用是对数据进行划分和排序,多个分区列的情况下,按照分区列的顺序依次比较,最终得到对应的分区。