文章目录
AggregateFunction
AggregatingMergeTree就有些许数据立方体的意思,它能够在合并分区的时候,按照预先定义的条 件,聚合数据。同时,根据预先定义的聚合函数,计算数据并通过二进制的格式存入表内。将同一分组 下的多行数据,聚合成一行,既减少了数据行,又降低了后续聚合查询的开销。
-- 建表语句
CREATE TABLE agg_table(
id String,
city String,
code AggregateFunction(uniq,String),
value AggregateFunction(sum,UInt32),
create_time DateTime
)
ENGINE = AggregatingMergeTree()
PARTITION BY toYYYYMM(create_time)
ORDER BY (id,city)
PRIMARY KEY id
其中的uniq、sum是指定的聚合函数。大家可以在官网aggregate-functions 下查看更多的相关函数。
AggregateFunction是ClickHouse提供的一种特殊的数据类型,它能够以二进制的形式存储中间状态结 果。其使用方法也十分特殊,对于AggregateFunction类型的列字段,数据的写入和查询都与寻常不同。在写入数据时,需要调用State函数。而在查询数据时,则需要调用相应的Merge函数。
例如:在写入数据时需要调用与uniq、sum对应的uniqState和sumState函数,并使用INSERT SELECT 语法:
-- 写入测试数据id = A000, code相同;
INSERT INTO TABLE agg_table SELECT 'A000','test', uniqState('code1'), sumState(toUInt32(100)), '2019-08-10 17:00:00';
INSERT INTO

本文详细介绍了ClickHouse中AggregatingMergeTree表引擎的工作原理及其实现方式,包括AggregateFunction数据类型的特点、使用方法以及如何通过物化视图提升聚合查询的性能。
最低0.47元/天 解锁文章
1132

被折叠的 条评论
为什么被折叠?



