跳至主要内容

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;