《手摸手带你学ClickHouse》之SummingMergeTree表引擎

青旅半醒 2023-09-30 09:56 66阅读 0赞

前文回顾:
《手摸手带你学ClickHouse》之安装部署
《手摸手带你学ClickHouse》之访问接口
《手摸手带你学ClickHouse》之导入导出数据
《手摸手带你学ClickHouse》之MergeTree系列表引擎
《手摸手带你学ClickHouse》之ReplacingMergeTree表引擎
《手摸手带你学ClickHouse》之CollapsingMergeTree表引擎
《手摸手带你学ClickHouse》之VersionedCollapsingMergeTree表引擎

废话不多说,这篇文章讲ClickHouse的SummingMergeTree表引擎


SummingMergeTree 表引擎可在分区合并时对数据进行聚合汇总。将同一分组下多行数据合并成一行,减少数据存储量,这样在查询时就能降低性能消耗,提高效率。

这种场景适用于:

  • 只需要汇总数据,不关注明细。
  • 汇总条件必须预先明确(GROUP BY条件明确)。

创建表:

  1. CREATE TABLE tb_summing(
  2. id Int8,
  3. city String,
  4. v1 UInt32,
  5. v2 Float64,
  6. create_time DateTime
  7. )ENGINE = SummingMergeTree()
  8. PARTITION BY toYYYYMM(create_time)
  9. PRIMARY KEY id
  10. ORDER BY (id,city);

插入数据:

  1. insert into tb_summing
  2. values
  3. (1,'km',80,100,now()),
  4. (1,'km',30,90,now()),
  5. (3,'km',50,60,'2021-07-02 17:02:12'),
  6. (3,'bj',200,70.99,'2021-07-02 17:02:12');

在这里插入图片描述

合并分区:

  1. optimize table tb_summing final;

合并分区时,分区内数据自动根据ORDER BY条件取值进行聚合操作,如下。
在这里插入图片描述

需要注意的是,在声明引擎时,可以传入参数

  1. ENGINE= SummingMergeTree(col1,col2…)

这是选填参数,用于指定除主键外需要汇总的字段,如果没有参数则默认汇总非主键的其余所有数值型字段

后续将继续更新该系列,大佬超手摸手带你学ClickHouse,敬请关注!!!


觉得有帮助点个赞吧!!!
原创不易,转载请注明出处。

发表评论

表情:
评论列表 (有 0 条评论,66人围观)

还没有评论,来说两句吧...

相关阅读