CoalescingMergeTree
从版本 25.6 开始提供
该表引擎从版本 25.6 及更高版本在 OSS 和 Cloud 中提供。
该引擎继承自 MergeTree。主要区别在于数据分片的合并方式:对于 CoalescingMergeTree 表,ClickHouse 会将所有具有相同主键(或者更准确地说,具有相同的 排序键)的行替换为一行,该行包含每列的最新非 NULL 值。
这使得列级的 upserts 成为可能,这意味着您可以仅更新特定的列,而不是整个行。
CoalescingMergeTree 旨在与非键列中的 Nullable 类型一起使用。如果列不是 Nullable,则行为与 ReplacingMergeTree 相同。
创建表
有关请求参数的描述,请参阅 请求描述。
CoalescingMergeTree 的参数
列
columns - 一个包含将要合并的列名的元组。可选参数。
这些列必须是数字类型,并且不得在分区或排序键中。
如果未指定 columns,ClickHouse 将合并所有不在排序键中的列的值。
查询子句
创建 CoalescingMergeTree 表时,所需的 子句 与创建 MergeTree 表时相同。
创建表的弃用方法
备注
在新项目中不要使用此方法,如果可能,请将旧项目切换到上述方法。
除了 columns 之外,所有参数的含义与 MergeTree 相同。
columns— 一个包含将被合并的列名的元组。可选参数。有关描述,请参见上面的文字。
示例
考虑以下表:
向其中插入数据:
结果将如下所示:
推荐的查询以获得正确和最终的结果:
使用 FINAL 修饰符强制 ClickHouse 在查询时应用合并逻辑,确保您获得每列的正确合并的“最新”值。这是在从 CoalescingMergeTree 表中查询时最安全和最准确的方法。
备注
如果基础分片尚未完全合并,则使用 GROUP BY 的方法可能会返回不正确的结果。