关于clickhouse:Clickhouse-查询去重

70次阅读

共计 666 个字符,预计需要花费 2 分钟才能阅读完成。

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…

正文完
 0