SimpleAggregateFunction
SimpleAggregateFunction(name, types_of_arguments...)
数据类型存储聚合函数的当前值,并且不像AggregateFunction
那样存储其完整状态。此优化可以应用于满足以下属性的函数:将函数 f
应用于行集 S1 UNION ALL S2
的结果可以通过分别将 f
应用于行集的部分,然后再次将 f
应用于结果来获得:f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2))
。此属性保证部分聚合结果足以计算组合结果,因此我们不必存储和处理任何额外数据。
生成聚合函数值的常用方法是使用 -SimpleState 后缀调用聚合函数。
支持以下聚合函数
any
anyLast
min
max
sum
sumWithOverflow
groupBitAnd
groupBitOr
groupBitXor
groupArrayArray
groupUniqArrayArray
sumMap
minMap
maxMap
注意
SimpleAggregateFunction(func, Type)
的值看起来与 Type
的存储方式相同,因此您无需应用带有 -Merge
/-State
后缀的函数。
对于相同的聚合函数,SimpleAggregateFunction
的性能优于 AggregateFunction
。
参数
- 聚合函数的名称。
- 聚合函数参数的类型。
示例
CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;