目录
问题描述:
使用MergeTree引擎建表,进行插入数据时,发现数据重复。
原因:
MergeTree的主键(PRIMARY KEY)只是用来生成一级索引(primary.idx)的,并没有唯一性约束这样的语义。
ReplacingMergeTree通过ORDER BY,表示判断唯一约束的条件。当分区合并之时,根据ORDER BY排序后,相邻重复的数据会被排除。
解决:
换用ReplacingMergeTree引擎建表
ReplacingMergeTree建表语法参考:(根据 id + code 分组去重)
create table replace_test(
id String,
code String,
create_time DateTime
)ENGINE = ReplacingMergeTree()
PARTITION BY toYYYYMM(create_time)
ORDER BY (id,code)
PRIMARY key id;