自 25.6 版本起可用此表引擎在 OSS 和 Cloud 中自 25.6 版本起可用。
CoalescingMergeTree 表,ClickHouse 会将具有相同主键的所有行 (更准确地说,具有相同排序键的所有行) 合并为一行,该行包含每一列最新的非 NULL 值。
这使得列级 upsert 成为可能,也就是说,你可以只更新特定列,而不必更新整行。
CoalescingMergeTree 适用于非键列中的 Nullable 类型。如果这些列不是 Nullable,则其行为与 ReplacingMergeTree 相同。
创建表
CoalescingMergeTree 参数
列
columns - 可选。一个 Tuple,包含要合并其值的列名。给定的列不能位于分区或排序键中。如果未指定 columns,ClickHouse 会合并所有不在排序键中的列的值。
查询子句
CoalescingMergeTree 表时,需要使用与创建 MergeTree 表相同的子句。
使用示例
FINAL 修饰符会强制 ClickHouse 在查询时应用合并逻辑,确保你能为每一列获取正确、合并后的”最新”值。这是在从 CoalescingMergeTree 表中查询时最安全、最准确的方法。
如果底层 parts 尚未完全合并,使用
GROUP BY 的方法可能会返回不正确的结果。