AggregateFunction Type
説明
ClickHouseのすべての Aggregate functions は、特定の実装に基づいた中間状態を持ち、これをシリアル化して AggregateFunction データ型としてテーブルに保存できます。通常、これは materialized view を通じて行われます。
AggregateFunction 型と一般的に使用される2つの集約関数 combinators があります:
-State集約関数コンビネーターは、集約関数名に追加されると、AggregateFunctionの中間状態を生成します。-Merge集約関数コンビネーターは、中間状態から集約の最終結果を得るために使用されます。
構文
パラメータ
aggregate_function_name- 集約関数の名前。関数がパラメトリックの場合、そのパラメータも指定する必要があります。types_of_arguments- 集約関数引数の型。
例えば:
使用法
データ挿入
AggregateFunction 型のカラムを持つテーブルにデータを挿入するには、集約関数と -State 集約関数コンビネーターを使用して INSERT SELECT を利用できます。
例えば、AggregateFunction(uniq, UInt64) および AggregateFunction(quantiles(0.5, 0.9), UInt64) 型のカラムに挿入するには、次の集約関数とコンビネーターを使用します。
関数 uniq と quantiles と対照的に、uniqState および quantilesState (-State コンビネーターが追加されたもの)は、最終値ではなく状態を返します。言い換えれば、これらは AggregateFunction 型の値を返します。
SELECT クエリの結果では、AggregateFunction 型の値は、すべての ClickHouse 出力形式に対して実装固有のバイナリ表現を持っています。
例えば、TabSeparated 形式にデータをダンプする際、SELECT クエリを使用してダンプした後、このダンプは INSERT クエリを使って再読み込みできます。
データ選択
AggregatingMergeTree テーブルからデータを選択する場合、GROUP BY 句を使用し、データを挿入した際と同じ集約関数を使用しますが、-Merge コンビネーターを使用します。
-Merge コンビネーターが追加された集約関数は、中間状態のセットを取得し、それらを結合して完全なデータ集約の結果を返します。
例えば、次の2つのクエリは同じ結果を返します:
使用例
AggregatingMergeTree エンジンの説明を参照してください。
参考コンテンツ
- ブログ: ClickHouseでのAggregate Combinatorsの使用
- MergeState コンビネーター。
- State コンビネーター。