
## List Partition
在之前的版本中,Doris 仅支持 Range Partition 这种分区方式。Range Partition 允许用户指定一列或多列的范围作为一个分区的数据值界限。这种分区方式可以很好的解决大部分基于时间增长的数据场景。
但是某些情况下,用户需要按照某些枚举类型的值进行数据分区。如按照省份、地域、产品类别等。而是用Range Partition无法有效的表达这种分区方式。因此在 0.14.8 及以上 版本中,Doris 支持了 List Partition 分区方式。
List Partition 允许用户指定一列或多列作为分区列,并指定具体的列值作为分区值。
单列分区
当指定单列作为分区列时,List Partition 的语法如下:
PARTITION BY LIST(`city`)(PARTITION `p_cn` VALUES IN ("Beijing", "Shanghai", "Hong Kong"),PARTITION `p_usa` VALUES IN ("New York", "San Francisco"),PARTITION `p_jp` VALUES IN ("Tokyo"))
如上示例,我们使用 city 作为分区列,每一个分区可以枚举多个值作为分区值。比如 p_cn 分区中,可以存储 Beijing、Shanghai、HongKong 三种值。
多列分区
当指定多列作为分区列时,List Partition 的语法如下:
PARTITION BY LIST(`id`, `city`)(PARTITION `p1_city` VALUES IN (("1", "Beijing"), ("1", "Shanghai")),PARTITION `p2_city` VALUES IN (("2", "Beijing"), ("2", "Shanghai")),PARTITION `p3_city` VALUES IN (("3", "Beijing"), ("3", "Shanghai")))
如上示例,我们使用 id、city 两列作为分区列。一个分区可以指定多个“列值组合”作为分区值。比如 p1_city 分区可以存储 ("1", "Beijing") 和 ("1", "Shanghai") 两组值。
## 其他说明和注意事项
同 Range Partition,当导入数据值在分区范围外,则不会被导入。
同 Range Partition,分区下一级需指定分桶列对数据进行 Hash 分桶。
同 Range Partition,List Partition 也可以进行增加、删除、Truncate 等一系列操作。也同样支持查询时的分区裁剪。
目前不支持 NULL 值作为 List Partition 的分区值。即 List Partition 的分区列必须为 NOT NULL 列。
目前 Spark Load 不支持 List Partition 分区表的导入。其他导入方式均支持。
END
List Partition 作为一种新的分区方式,可以帮助用户更好的对应场景建模。
【Doris Weekly】2021.04.26~2021.05.09
【Doris Weekly】2021.04.13~2021.04.26
【Doris Weekly】2021.03.22 ~ 2021.04.11
Doris 功能介绍-Proc 系统

百度数据仓库 Powered by Doris
基于 Apache Doris 的企业级数据仓库托管服务
全新UI支持,更有新用户0元试用3个月优惠活动
登陆百度智能云官网搜索Doris,马上试用!

📣百度Doris 团队,诚邀对开源软件、分布式数据库感兴趣的小伙伴们
我们虚位以待!
简历发送至:talent-doris@baidu.com
欢迎扫码关注:

Apache Doris(incubating)官方公众号
相关链接:
Apache Doris官方网站:
http://doris.incubator.apache.org
Apache Doris Github:
https://github.com/apache/incubator-doris
Apache Doris 开发者邮件组:
dev@doris.apache.org





