AggregatingMergeTree
このエンジンは MergeTree から継承され、データパートのマージのロジックが変更されています。 ClickHouseは、同じ主キー(正確には同じ ソートキー)を持つすべての行を、集約関数の状態の組み合わせを格納する単一の行(単一のデータパート内)に置き換えます。
AggregatingMergeTree
テーブルは、集約されたマテリアライズドビューを含む増分データの集約に使用できます。
以下のビデオでは、AggregatingMergeTreeとAggregate関数の使用例を見ることができます:
このエンジンは、次のタイプのすべてのカラムを処理します。
AggregateFunction
SimpleAggregateFunction
AggregatingMergeTree
を使用するのが適切な場合は、行の数がオーダーで減少するときです。
テーブルの作成
リクエストパラメータの説明については、 リクエストの説明 を参照してください。
クエリ句
AggregatingMergeTree
テーブルを作成する際には、MergeTree
テーブルを作成するときと同じ 句 が必要です。
テーブルを作成するための非推奨の方法
新しいプロジェクトではこの方法を使用せず、可能であれば古いプロジェクトを上記の方法に切り替えてください。
すべてのパラメータは、MergeTree
と同じ意味を持ちます。
SELECTおよびINSERT
データを挿入するには、集約-状態-関数を使用した INSERT SELECT クエリを使用します。
AggregatingMergeTree
テーブルからデータを選択する際は、GROUP BY
句を使用し、挿入データの際と同じ集約関数を使用しますが、-Merge
サフィックスを使用します。
SELECT
クエリの結果では、AggregateFunction
型の値は、ClickHouseのすべての出力フォーマットに対して実装固有のバイナリ表現を持ちます。たとえば、SELECT
クエリでデータをTabSeparated
フォーマットにダンプすると、このダンプはINSERT
クエリを使用して再度ロードできます。
集約されたマテリアライズドビューの例
以下の例では、test
という名前のデータベースがある前提で、存在しない場合は作成してください:
次に、生データを含むテーブルtest.visits
を作成します:
次に、訪問の合計数とユニークユーザーの数を追跡するAggregateFunction
を保持するAggregatingMergeTree
テーブルが必要です。
test.visits
テーブルを監視し、AggregateFunction
型を使用するAggregatingMergeTree
マテリアライズドビューを作成します:
test.agg_visits
をtest.visits
から populatesするマテリアライズドビューを作成します:
test.visits
テーブルにデータを挿入します:
データはtest.visits
とtest.agg_visits
の両方に挿入されます。
集約データを取得するには、test.mv_visits
マテリアライズドビューから SELECT ... GROUP BY ...
のようなクエリを実行します:
test.visits
にさらに数件のレコードを追加しますが、今回は1つのレコードに異なるタイムスタンプを使用してみてください:
再度 SELECT
クエリを実行すると、次の出力が得られます: