跳到主要内容

AUTO_PARTITION_NAME

描述

AUTO_PARTITION_NAME 函数用于生成自动分区的分区名称。支持两种模式:RANGE 模式按时间单位生成分区名,LIST 模式根据字符串生成分区名。

自 Apache Doris 2.1.6 版本开始支持。

语法

AUTO_PARTITION_NAME('RANGE', <unit>, <datetime>)
AUTO_PARTITION_NAME('LIST', <value>[, <value> ...])

参数

参数说明
'RANGE'RANGE 分区模式,根据时间生成分区名
'LIST'LIST 分区模式,根据字符串值生成分区名
<unit>RANGE 模式的时间单位:yearmonthdayhourminutesecond。类型:VARCHAR
<datetime>RANGE 模式的日期时间值。类型:DATETIME
<value>LIST 模式的分区值(可多个)。类型:VARCHAR

返回值

返回 VARCHAR 类型,为生成的分区名称。

特殊情况:

  • RANGE 模式:分区名格式为 pYYYYMMDDHHMMSS,根据 unit 截断到对应精度
  • LIST 模式:分区名格式为 p<value><length>,多个值用长度分隔
  • 如果参数无效,返回错误

示例

  1. 基本用法:RANGE 按天分区
SELECT auto_partition_name('range', 'day', '2022-12-12 19:20:30');
+------------------------------------------------------------+
| auto_partition_name('range', 'day', '2022-12-12 19:20:30') |
+------------------------------------------------------------+
| p20221212000000 |
+------------------------------------------------------------+
  1. RANGE 按月分区
SELECT auto_partition_name('range', 'month', '2022-12-12 19:20:30');
+--------------------------------------------------------------+
| auto_partition_name('range', 'month', '2022-12-12 19:20:30') |
+--------------------------------------------------------------+
| p20221201000000 |
+--------------------------------------------------------------+
  1. LIST 单个值
SELECT auto_partition_name('list', 'helloworld');
+-------------------------------------------+
| auto_partition_name('list', 'helloworld') |
+-------------------------------------------+
| phelloworld10 |
+-------------------------------------------+
  1. LIST 多个值
SELECT auto_partition_name('list', 'hello', 'world');
+-----------------------------------------------+
| auto_partition_name('list', 'hello', 'world') |
+-----------------------------------------------+
| phello5world5 |
+-----------------------------------------------+
  1. UTF-8 特殊字符支持:LIST 模式
SELECT auto_partition_name('list', 'ṭṛì', 'ḍḍumai');
+------------------------------------------------+
| auto_partition_name('list', 'ṭṛì', 'ḍḍumai') |
+------------------------------------------------+
| pṭṛì9ḍḍumai12 |
+------------------------------------------------+
  1. 无效的 unit 参数
SELECT auto_partition_name('range', 'years', '2022-12-12');
ERROR 1105 (HY000): errCode = 2, detailMessage = range auto_partition_name must accept year|month|day|hour|minute|second for 2nd argument

Keywords

AUTO_PARTITION_NAME,AUTO,PARTITION,NAME