Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

SimpleAggregateFunction 类型

描述

SimpleAggregateFunction 数据类型存储聚合函数的中间状态, 但不像 AggregateFunction 类型那样存储其完整状态。

这种优化可应用于满足以下性质的函数:

对行集 S1 UNION ALL S2 应用函数 f 的结果,可以通过分别对行集的各个部分应用 f,然后再 对这些结果应用 f 得到:f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2))

这一性质保证了,部分聚合结果就足以计算 合并后的结果,因此我们无需存储和处理任何额外数据。例如, minmax 函数的结果无需额外步骤即可从中间结果 计算出最终结果,而 avg 函数则需要跟踪总和与计数, 然后在合并中间状态的最终 Merge 步骤中将二者相除以得到 平均值。

聚合函数值通常通过调用聚合函数,并在函数名后附加 -SimpleState 组合器来生成。

语法

SimpleAggregateFunction(aggregate_function_name, types_of_arguments...)

参数

  • aggregate_function_name - 聚合函数名称。
  • Type - 聚合函数参数的类型。

支持的函数

支持以下聚合函数:

示例

CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;
Navigation