上文《ClickHouse基础系列(十一)ClickHouse表引擎之MergeTree系列ReplacingMergeTree引擎》介绍了ReplacingMergeTree。本文的话我们来介绍下这里的SumingMergeTree引擎。这里的SumingMergeTree引擎和名字是一样的,遇到相同主键的时候,会把对应的值进行求和合并。相当于 sum+group by的效果。这种比较适合统一一些UV,PV等场景的案例。下面我们来演示一下:
#创建一张pageviews的表 CREATE TABLE if not exists test.pageviews( uid UInt8, ugroup UInt8, pv UInt8 ) ENGINE = SummingMergeTree(pv) PARTITION BY ugroup primary key uid ORDER BY uid; #插入几条数据 insert into test.pageviews(uid,ugroup,pv) values(1,1,1); insert into test.pageviews(uid,ugroup,pv) values(1,1,1); insert into test.pageviews(uid,ugroup,pv) values(1,1,1); insert into test.pageviews(uid,ugroup,pv) values(2,1,1); #查询结果 select * from test.pageviews;
#合并pageviews表 optimize table test.pageviews; #查询最后结果 select * from test.pageviews;
可以看到id为1的用户的pv值被合并了,展示的是最后相加的值。
备注:
1、这里的SummingMergeTree引擎继承了ReplacingMergeTree的同分区去重功能。 2、SummingMergeTree引擎需要指定指点进行合并,如果没有指定的话,则会把所有非主键的数值类型的字段进行合并。 3、SummingMergeTree引擎仅对相同分区的相同主键数据进行合并,不会合并不同分区相同的主键数据。
还没有评论,来说两句吧...