CoalescingMergeTree
Этот движок таблиц доступен с версии 25.6 и выше как в OSS, так и в Cloud.
Этот движок наследуется от MergeTree. Ключевое отличие заключается в том, как сливаются части данных: для таблиц CoalescingMergeTree
ClickHouse заменяет все строки с одинаковым первичным ключом (или, скорее, с одинаковым ключом сортировки) на одну строку, содержащую последние ненулевые значения для каждого столбца.
Это позволяет выполнять обновления на уровне столбцов, что означает, что вы можете обновлять только определенные столбцы, а не целые строки.
CoalescingMergeTree
предназначен для использования с Nullable типами в неключевых столбцах. Если столбцы не являются Nullable, поведение будет таким же, как у ReplacingMergeTree.
Создание таблицы
Для описания параметров запроса см. описание запроса.
Параметры CoalescingMergeTree
Столбцы
columns
- кортеж с именами столбцов, значения которых будут объединены. Необязательный параметр.
Столбцы должны быть числового типа и не должны входить в ключ партиционирования или сортировки.
Если columns
не указан, ClickHouse объединяет значения во всех столбцах, которые не находятся в ключе сортировки.
Операторные части запроса
При создании таблицы CoalescingMergeTree
требуются те же операторные части, что и при создании таблицы MergeTree
.
Устаревший метод создания таблицы
Не используйте этот метод в новых проектах и, если возможно, переключите старые проекты на описанный выше метод.
Все параметры, кроме columns
, имеют то же значение, что и в MergeTree
.
columns
— кортеж с именами столбцов, значения которых будут суммироваться. Необязательный параметр. Для описания см. текст выше.
Пример использования
Рассмотрим следующую таблицу:
Вставим в нее данные:
Результат будет выглядеть так:
Рекомендуемый запрос для получения правильного и окончательного результата:
Использование модификатора FINAL
заставляет ClickHouse применять логику слияния во время выполнения запроса, гарантируя, что вы получите правильное, объединенное "последнее" значение для каждого столбца. Это самый безопасный и точный метод при запросах из таблицы CoalescingMergeTree.
Подход с GROUP BY
может возвращать некорректные результаты, если основные части еще не были полностью объединены.