配置
@DorisTable
indexes
- 说明: 索引配置,见
@DorisIndex
- 默认值:
[]
engine
- 说明: 表引擎,目前仅支持
olap
- 默认值:
olap
duplicate_key
/unique_key
/aggregate_key
- 说明: 定义明细模型/主键模型/聚合模型的key,三选一
- 默认值:
[]
- 值类型: 可使用字段名,也可以使用列名,如
userId
或user_id
,推荐搭配lombok
的@FieldNameConstants
注解使用 - 特殊情况: 如果三个配置都为空,将使用主键字段作为
unique_key
auto_partition
- 说明: 是否开启自动分区
- 默认值:
false
auto_partition_time_unit
- 说明: 自动分区时间单位
- 默认值:
none
partition_by_range
/partition_by_list
- 说明: 手动
range
/list
分区,二选一 - 默认值:
[]
- 值类型: 可使用字段名,也可以使用列名,如
userId
或user_id
,推荐搭配lombok
的@FieldNameConstants
注解使用
partitions
- 说明: 手动分区配置配置,见
@DorisPartition
- 默认值:
[]
dynamic_partition
- 说明: 动态分区配置,见
@DorisDynamicPartition
- 默认值:
@DorisDynamicPartition(enable = false)
distributed_by_hash
- 说明:
hash
分桶算法使用的列 - 默认值:
[]
- 值类型: 可使用字段名,也可以使用列名,如
userId
或user_id
,推荐搭配lombok
的@FieldNameConstants
注解使用 - 特殊情况: 如果为空,则指定分桶算法为
random
,即distributed by random
distributed_buckets
- 说明: 分桶数量
- 默认值:
-1
- 特殊情况:
-1
代表auto
,即buckets auto
rollup
- 说明: 物化视图配置,见
@DorisRollup
- 默认值:
[]
properties
- 说明: 建表
properties
配置 - 默认值:
[]
java
@DorisTable(
properties = {
"replication_num=1",
"k1=v1",
"k2=v2",
"k3=v3",
}
)
sql
CREATE TABLE ... (
)
...
properties(
"replication_num"="1",
"k1"="v1",
"k2"="v2",
"k3"="v3"
)
@DorisColumn
在字段上的补充列定义
aggregateFun
- 说明: 对列定义一个聚合函数
- 默认值:
none
autoIncrementStartValue
- 说明: 自增起始值
- 默认值:
-1
- 特殊情况:
-1
代表不定义起始值
onUpdateCurrentTimestamp
- 说明: 是否更新为当前时间戳
- 默认值:
false
@DorisIndex
name
- 说明: 索引名
- 默认值: 空
column
- 说明: 索引列
- 默认值: 空
- 值类型: 可使用字段名,也可以使用列名,如
userId
或user_id
,推荐搭配lombok
的@FieldNameConstants
注解使用
using
- 说明: 索引类型
- 默认值:
inverted
- 值类型:
inverted
=倒排索引,ngram_bf
=NGram BloomFilter
索引,bitmap
=Bitmap
索引
properties
- 说明:
properties
配置 - 默认值:
[]
comment
- 说明: 索引注释
- 默认值: 空
@DorisDynamicPartition
会生成dynamic_partition.xxx=yyy
的properties
属性
见 https://doris.apache.org/zh-CN/docs/3.0/table-design/data-partitioning/dynamic-partitioning#动态分区属性参数
@DorisPartition
partition
- 说明: 分区名称
- 默认值: 空
values_left_include
- 说明: range分区values左闭区间
- 默认值:
[]
values_right_exclude
- 说明:
range
分区values
右开区间 - 默认值:
[]
values_less_than
- 说明:
range
分区values
分区上界 - 默认值:
[]
from
- 说明: range批量分区左闭区间
- 默认值: 空
to
- 说明: range批量分区右开区间
- 默认值: 空
interval
- 说明: range批量分区步长
- 默认值:
-1
unit
- 说明: range批量分区步长单位
- 默认值:
none
values_in
- 说明: list分区value,根据list key数量生成
values in ((V1, V2,...), (Vn, Vm, ...), (...)...)
- 默认值:
none
例子
java
partition_by_range = {Table2.Fields.k1},
partitions = {
@DorisPartition(partition = "p1", values_less_than = "2020-02-01"),
@DorisPartition(partition = "p2", values_less_than = "2020-03-01"),
@DorisPartition(partition = "p3", values_less_than = "2020-04-01")
},
sql
partition by range(`k1`) (
partition `p1` values less than ("2020-02-01"),
partition `p2` values less than ("2020-03-01"),
partition `p3` values less than ("2020-04-01")
)
java
partition_by_range = {Table4.Fields.k1, Table4.Fields.k2, Table4.Fields.k3},
partitions = {
@DorisPartition(partition = "p1", values_left_include = {"2014-01-01", "10", "200"}, values_right_exclude = {"2014-01-02", "20", "300"}),
@DorisPartition(partition = "p2", values_left_include = {"2014-06-01", "100", "200"}, values_right_exclude = {"2014-07-01", "100", "300"}),
},
sql
partition by range(`k1`, `k2`, `k3`) (
partition `p1` values [("2014-01-01", "10", "200"), ("2014-01-02", "20", "300")),
partition `p2` values [("2014-06-01", "100", "200"), ("2014-07-01", "100", "300"))
)
java
partition_by_range = {Table13.Fields.k1},
partitions = {
@DorisPartition(from = "2000-11-14", to = "2021-11-14", interval = 1, unit = DorisTimeUnit.year),
@DorisPartition(from = "2021-11-14", to = "2022-11-14", interval = 1, unit = DorisTimeUnit.month),
@DorisPartition(from = "2022-11-14", to = "2023-01-03", interval = 1, unit = DorisTimeUnit.week),
@DorisPartition(from = "2023-01-03", to = "2023-01-14", interval = 1, unit = DorisTimeUnit.day),
@DorisPartition(partition = "p_20230114", values_left_include = "2023-01-14", values_right_exclude = "2023-01-15"),
},
sql
partition by range(`k1`) (
from ("2000-11-14") to ("2021-11-14") interval 1 year,
from ("2021-11-14") to ("2022-11-14") interval 1 month,
from ("2022-11-14") to ("2023-01-03") interval 1 week,
from ("2023-01-03") to ("2023-01-14") interval 1 day,
partition `p_20230114` values [("2023-01-14"), ("2023-01-15"))
)
java
partition_by_list = {Table15.Fields.k1, Table15.Fields.k2},
partitions = {
@DorisPartition(partition = "p1_city", values_in = {"1", "北京", "1", "上海"}),
@DorisPartition(partition = "p2_city", values_in = {"2", "北京", "2", "上海"}),
@DorisPartition(partition = "p3_city", values_in = {"3", "北京", "3", "上海"}),
},
sql
partition by list(`k1`, `k2`) (
partition `p1_city` values in (("1", "北京"), ("1", "上海")),
partition `p2_city` values in (("2", "北京"), ("2", "上海")),
partition `p3_city` values in (("3", "北京"), ("3", "上海"))
)
@DorisRollup
name
- 说明: 索引名称
- 默认值: 空
columns
- 说明: 索引列
- 默认值: 空
- 值类型: 可使用字段名,也可以使用列名,如userId或user_id,推荐搭配lombok的@FieldNameConstants注解使用
properties
- 说明: 建表
properties
配置 - 默认值:
[]