CoalescingMergeTree テーブルエンジン
このテーブルエンジンは、OSS と Cloud の両方でバージョン 25.6 以降で利用可能です。
このエンジンは MergeTree を継承しています。主な違いはデータパートのマージ方法です。CoalescingMergeTree テーブルでは、ClickHouse は同じ主キー(より正確には、同じ ソートキー)を持つすべての行を、各カラムについて最新の非 NULL 値を含む 1 行に置き換えます。
これによりカラム単位のアップサートが可能になり、行全体ではなく特定のカラムだけを更新できます。
CoalescingMergeTree は、キー以外のカラムで Nullable 型と併用することを想定しています。カラムが Nullable でない場合は、その動作は ReplacingMergeTree と同じになります。
テーブルを作成する
リクエストパラメータの説明については、リクエストの説明を参照してください。
CoalescingMergeTree のパラメータ
Columns
columns - 値が統合されるカラム名のタプルです。省略可能なパラメータです。
カラムは数値型である必要があり、パーティションキーまたはソートキーに含まれていてはなりません。
columns が指定されていない場合、ClickHouse はソートキーに含まれていないすべてのカラムの値を統合します。
クエリ句
CoalescingMergeTree テーブルを作成する際には、MergeTree テーブルを作成する場合と同じ 句 が必要です。
非推奨のテーブル作成方法
新しいプロジェクトではこの方法を使用しないでください。可能であれば、既存のプロジェクトも上で説明した方法に切り替えてください。
columns を除くすべてのパラメータは、MergeTree における意味と同じです。
columns— 値が合計されるカラム名のタプルです。省略可能なパラメータです。詳細な説明については上記のテキストを参照してください。
使用例
次のテーブルを例にします。
データを挿入する:
結果は次のようになります。
最終的な正しい結果を得るための推奨クエリ:
FINAL 修飾子を使用すると、クエリ実行時に ClickHouse がマージロジックを適用し、各カラムごとに正しい統合後の「最新」値を必ず取得できます。これは、CoalescingMergeTree テーブルに対してクエリを実行する際に、最も安全で精度の高い方法です。
GROUP BY を用いるアプローチは、背後のパーツが完全にはマージされていない場合、誤った結果を返す可能性があります。