Доступно с версии 25.6Этот движок таблицы доступен начиная с версии 25.6 как в OSS, так и в Cloud.
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.
Эта настройка не может быть изменена и должна быть указана при создании таблицы.