ToB企服应用市场:ToB评测及商务社交产业平台

标题: ClickHouse(12)ClickHouse合并树MergeTree家族表引擎之AggregatingMergeTre [打印本页]

作者: 灌篮少年    时间: 2023-2-7 01:43
标题: ClickHouse(12)ClickHouse合并树MergeTree家族表引擎之AggregatingMergeTre
目录

AggregatingMergeTree引擎继承自 MergeTree,并改变了数据片段的合并逻辑。ClickHouse会将一个数据片段内所有具有相同主键(准确的说是排序键)的行替换成一行,这一行会存储一系列聚合函数的状态。
可以使用AggregatingMergeTree表来做增量数据的聚合统计,包括物化视图的数据聚合。
引擎使用以下类型来处理所有列:
AggregatingMergeTree适用于能够按照一定的规则缩减行数的情况。
建表语法
  1. CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
  2. (
  3.     name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
  4.     name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
  5.     ...
  6. ) ENGINE = AggregatingMergeTree()
  7. [PARTITION BY expr]
  8. [ORDER BY expr]
  9. [SAMPLE BY expr]
  10. [TTL expr]
  11. [SETTINGS name=value, ...]
复制代码
AggregatingMergeTree表参数与MergeTree表是一致。MergeTree表引擎的解析可以参考ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析
查询和插入数据

要插入数据,需使用带有-State-聚合函数的INSERT或SELECT语句。从AggregatingMergeTree表中查询数据时,需使用GROUP BY子句并且要使用与插入时相同的聚合函数,但后缀要改为-Merge。
对于SELECT查询的结果,AggregateFunction类型的值对ClickHouse的所有输出格式都实现了特定的二进制表示法。在进行数据转储时,例如使用TabSeparated格式进行SELECT查询,那么这些转储数据也能直接用INSERT语句导回。
如下面的例子。
  1. -- 创建一个AggregatingMergeTree物化视图
  2. CREATE MATERIALIZED VIEW test.basic
  3. ENGINE = AggregatingMergeTree() PARTITION BY toYYYYMM(StartDate) ORDER BY (CounterID, StartDate)
  4. AS SELECT
  5.     CounterID,
  6.     StartDate,
  7.     sumState(Sign)    AS Visits,
  8.     uniqState(UserID) AS Users
  9. FROM test.visits
  10. GROUP BY CounterID, StartDate;
  11. --向 test.visits 表中插入数据,数据会同时插入到表和视图中,并且视图 test.basic 会将里面的数据聚合。
  12. INSERT INTO test.visits ...
  13. -- 获取聚合数据,需要在test.basic视图上执行类似SELECT ... GROUP BY ...这样的查询
  14. SELECT
  15.     StartDate,
  16.     sumMerge(Visits) AS Visits,
  17.     uniqMerge(Users) AS Users
  18. FROM test.basic
  19. GROUP BY StartDate
  20. ORDER BY StartDate;
复制代码
数据处理逻辑

最后总结一下AggregatingMergeTree的处理逻辑。
ClickHouse相关资料分享

ClickHouse经典中文文档分享
参考文章:ClickHouse(03)ClickHouse怎么安装和部署

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4