doris 序列列

216 阅读1分钟

作用

doris的unique模型保证主键唯一。但是在数据加载的时候,无法保证同一个key的数据是哪条替换那条,也就是说无法确定同一个Key的数据是哪一条入表。

为了解决这个问题,doris支持在建表的时候指定序列列,同一个Key的数据,会根据序列列的值,序列列较大的是的数据会替换掉较小的值的数据。

限制

序列列sequence目前只支持unique模型。

使用

可以在建表语句中指定

properties(
"function_column.sequence_type"="int" -- 指定序列列类型.只能整数型或者日期/时间类型(date,datetime)
);

或者

properties(
"function_column.sequence_col"="col列" -- 指定序列列是哪一列,只能整数型或者日期/时间类型(date,datetime)
);

也可以在建表后修改表结构

alter table doris_ts.incr_tb4 enable feature "sequence_load" with properties(
"function_column.sequence_type"="Date"  -- 只能整数型或者日期/时间类型(date,datetime)
)

查看表是否开启序列列

SET show_hidden_columns=true;
desc dbname.tablename;

例子

-- 序列列
create table if not exists doris_ts.sequence_tb(
    user_id bigint,
    date date,
    group_id bigint,
    modify_date date,
    keyword VARCHAR(128)
)engine=olap
unique key (user_id,date,group_id)
comment "XXX"
distributed by hash(user_id) buckets 10
properties(
"replication_num"="1",
"function_column.sequence_type"="int" -- 指定序列列类型
);

desc doris_ts.sequence_tb;