SimpleAggregateFunction 类型
描述
SimpleAggregateFunction 数据类型存储了聚合函数的中间状态,但不包括其完整状态,如 AggregateFunction 类型所做的那样。
此优化可应用于满足以下属性的函数:
对于行集
S1 UNION ALL S2,应用函数f的结果可以通过分别对行集的部分应用f,然后再对结果应用f得到:f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2))。
该属性保证部分聚合结果足以计算组合结果,因此我们无需存储和处理任何额外数据。例如,min 或 max 函数的结果在从中间步骤计算最终结果时不需要额外步骤,而 avg 函数需要跟踪一个总和和一个计数,这将在最终的 Merge 步骤中进行除法以获得平均值。
聚合函数的值通常是通过调用附有 -SimpleState 组合器的聚合函数来生成的。
语法
参数
aggregate_function_name- 聚合函数的名称。Type- 聚合函数参数的类型。
支持的函数
以下聚合函数是受支持的:
anyany_respect_nullsanyLastanyLast_respect_nullsminmaxsumsumWithOverflowgroupBitAndgroupBitOrgroupBitXorgroupArrayArraygroupUniqArrayArraygroupUniqArrayArrayMapsumMapminMapmaxMap
备注
SimpleAggregateFunction(func, Type) 的值具有相同的 Type,因此与 AggregateFunction 类型不同,无需应用 -Merge/-State 组合器。
SimpleAggregateFunction 类型在相同聚合函数下比 AggregateFunction 类型具有更好的性能。
示例
相关内容
- 博客: 在 ClickHouse 中使用聚合组合器 - 博客: 在 ClickHouse 中使用聚合组合器
AggregateFunction类型。