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

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_visitstest.visitsから populatesするマテリアライズドビューを作成します:

test.visitsテーブルにデータを挿入します:

データはtest.visitstest.agg_visitsの両方に挿入されます。

集約データを取得するには、test.mv_visitsマテリアライズドビューから SELECT ... GROUP BY ... のようなクエリを実行します:

test.visitsにさらに数件のレコードを追加しますが、今回は1つのレコードに異なるタイムスタンプを使用してみてください:

再度 SELECT クエリを実行すると、次の出力が得られます: