跳转到主要内容
跳转到主要内容
编辑此页

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 后缀调用聚合函数。

支持以下聚合函数

注意

SimpleAggregateFunction(func, Type) 的值看起来和存储方式与 Type 相同,因此您无需应用带有 -Merge/-State 后缀的函数。

SimpleAggregateFunction 比具有相同聚合函数的 AggregateFunction 具有更好的性能。

参数

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

示例

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