AggregateFunction 类型
描述
ClickHouse 中的所有 聚合函数 都具有特定实现的中间状态,可以序列化为 AggregateFunction
数据类型并存储在表中。通常通过 物化视图 来实现这一点。
常用的两种聚合函数 组合子 与 AggregateFunction
类型一起使用:
语法
参数
aggregate_function_name
- 聚合函数的名称。如果函数是参数化的,则其参数也应被指定。types_of_arguments
- 聚合函数参数的类型。
例如:
用法
数据插入
要将数据插入到具有 AggregateFunction
类型的列的表中,可以使用 INSERT SELECT
与聚合函数以及
-State
聚合函数组合子。
例如,要插入类型为 AggregateFunction(uniq, UInt64)
和 AggregateFunction(quantiles(0.5, 0.9), UInt64)
的列,你可以使用以下带组合子的聚合函数。
与函数 uniq
和 quantiles
不同,uniqState
和 quantilesState
(附加了 -State
组合子)返回状态,而不是最终值。
换句话说,它们返回的是 AggregateFunction
类型的值。
在 SELECT
查询的结果中,AggregateFunction
类型的值对于所有 ClickHouse 输出格式具有特定实现的二进制表示。
如果你将数据导出到例如 TabSeparated
格式并使用 SELECT
查询,则可以通过 INSERT
查询将此转储加载回。
数据选择
从 AggregatingMergeTree
表选择数据时,使用 GROUP BY
子句,以及在插入数据时所用的相同聚合函数,但使用
-Merge
组合子。
附加 -Merge
组合子的聚合函数接受一组状态,合并它们,并返回完整数据聚合的结果。
例如,以下两个查询返回相同的结果:
用法示例
见 AggregatingMergeTree 引擎描述。
相关内容
- 博客: 在 ClickHouse 中使用聚合组合子
- MergeState 组合子。
- State 组合子。