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