Skip to main content
Доступно с версии 25.6Этот движок таблицы доступен начиная с версии 25.6 как в OSS, так и в Cloud.
Этот движок наследуется от MergeTree. Ключевое отличие заключается в том, как сливаются части данных: в таблицах CoalescingMergeTree ClickHouse заменяет все строки с одним и тем же первичным ключом (или, точнее, с одним и тем же ключом сортировки) одной строкой, содержащей последние не-NULL-значения для каждого столбца. Это позволяет выполнять upsert на уровне столбцов, то есть обновлять только отдельные столбцы, а не строки целиком. CoalescingMergeTree предназначен для использования с типами Nullable в неключевых столбцах. Если столбцы не имеют типа Nullable, поведение будет таким же, как у ReplacingMergeTree.

Создание таблицы

Описание параметров запроса приведено в разделе описание запроса.

Параметры CoalescingMergeTree

Столбцы

columns — необязательный параметр. Кортеж с именами столбцов, значения в которых будут объединяться. Указанные столбцы не должны входить в партицию или ключ сортировки. Если columns не указан, ClickHouse объединяет значения во всех столбцах, которые не входят в ключ сортировки.

Секции запроса

При создании таблицы CoalescingMergeTree требуются те же секции, что и при создании таблицы MergeTree.

Пример использования

Рассмотрим следующую таблицу:
Вставьте в неё данные:
Результат будет выглядеть следующим образом:
Рекомендуемый запрос для получения корректного окончательного результата:
Использование модификатора FINAL заставляет ClickHouse применять логику слияния на этапе выполнения запроса, гарантируя получение корректного, объединённого “последнего” значения для каждого столбца. Это самый безопасный и точный способ при запросах к таблице CoalescingMergeTree.
Подход с GROUP BY может возвращать некорректные результаты, если части данных в основе таблицы ещё не были полностью слиты.

Агрегация элементов Tuple

Когда включена настройка allow_tuple_element_aggregation, столбцы Tuple рекурсивно разворачиваются, так что каждый конечный элемент независимо участвует в коалесценции. Это позволяет хранить несколько полей в одном столбце Tuple, а при слияниях выполнять для них поэлементную коалесценцию — каждый подстолбец Nullable независимо сохраняет последнее значение, отличное от NULL. К развёрнутым подстолбцам применяются те же правила, что и к обычным столбцам:
  • Подстолбцы, входящие в Tuple в ключе сортировки или ключе партиционирования, исключаются из коалесценции.
  • Если указан columns, коалесценции подвергаются только подстолбцы перечисленных столбцов Tuple.
Эта настройка не может быть изменена и должна быть указана при создании таблицы.
Последнее изменение 23 июля 2026 г.