バージョン 25.6 以降で利用可能このテーブルエンジンは、OSS と Cloud の両方でバージョン 25.6 以降から利用できます。
CoalescingMergeTree テーブルでは、ClickHouse は同じ主キー (より正確には同じソートキー) を持つすべての行を、各カラムの最新の非 NULL 値を含む 1 行に置き換えます。
これにより、カラム単位の upsert が可能になり、行全体ではなく特定のカラムだけを更新できます。
CoalescingMergeTree は、キーカラム以外で Nullable 型を使用することを前提としています。カラムが Nullable でない場合、動作は ReplacingMergeTree と同じです。
テーブルの作成
CoalescingMergeTree のパラメータ
カラム
columns - 任意。値を結合するカラム名のタプルです。指定するカラムは、パーティションまたはソートキーに含めることはできません。columns が指定されていない場合、ClickHouse はソートキーに含まれないすべてのカラムの値を結合します。
クエリ句
CoalescingMergeTree テーブルを作成する場合、MergeTree テーブルの作成時と同じ句が必要です。
使用例
FINAL 修飾子を使用すると、ClickHouse はクエリ時にマージロジックを適用し、各カラムについて正しく統合された”最新”の値を確実に取得できます。これは、CoalescingMergeTree テーブルにクエリを実行する際に、最も安全かつ正確な方法です。
GROUP BY を使う方法では、基盤となるパーツが完全にマージされていない場合、誤った結果が返されることがあります。Tuple 要素の集約
allow_tuple_element_aggregation 設定を有効にすると、Tuple カラムは再帰的にフラット化され、各リーフ要素が独立して coalescing の対象になります。これにより、複数のフィールドを 1 つの Tuple カラムに格納しつつ、マージ時には要素単位で coalescing できます。各 Nullable サブカラムは、それぞれ独立して最新の非 NULL 値を保持します。
フラット化されたサブカラムにも、通常のカラムと同じルールが適用されます。
- ソートキーまたはパーティションキー内の
Tupleに属するサブカラムは、coalescing の対象外です。 columnsが指定されている場合、列挙されたTupleカラムのサブカラムのみが coalescing されます。
この設定は変更不可であり、テーブル作成時に指定する必要があります。