clickhouse FINAL 关键字应用
FINAL 关键字 (针对 ReplacingMergeTree 引擎)
ClickHouse 会在返回后果之前齐全合并数据,从而执行给定表引擎合并
期间产生的所有数据转换。
留神:
1、select 语句 +final 的话,会对表的 order 字段进行排序去重。留神主键要加上分区字段(尽管跨分区不会去重,但 select 会合并后果)(试验过)。
2、在大多数状况下,防止应用 FINAL. 常见的办法是应用假如后盾过程的不同查问 MergeTree 引擎还没有产生,并通过利用聚合(例如,抛弃反复项)来解决它。
3、join 去重表 final 这样不会去重,join(select * from 去重表 final)这样能力去重。
分布式表能够加 final,能够实现去重。要确定好分布式表的 sharding_key(肯定是主键的第一个),确保雷同的数据去到同一个节点。
解决:
换用 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;
参考:
https://blog.csdn.net/qbm1234…
https://blog.csdn.net/qq_3830…