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...