メインコンテンツまでスキップ
メインコンテンツまでスキップ

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 コンビネータを付加することで、集約関数を呼び出すことによって一般的に生成されます。

構文

SimpleAggregateFunction(aggregate_function_name, types_of_arguments...)

パラメータ

  • aggregate_function_name - 集約関数の名前。
  • Type - 集約関数引数の型。

サポートされる関数

サポートされている集約関数は以下の通りです:

注記

SimpleAggregateFunction(func, Type) の値は同じ Type を持ちます。したがって、AggregateFunction タイプとは異なり、-Merge / -State コンビネータを適用する必要はありません。

SimpleAggregateFunction タイプは、同じ集約関数に対して AggregateFunction よりも優れたパフォーマンスを持っています。

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