Skip to main content
Skip to main content

AggregatingMergeTree

Движок наследует функциональность MergeTree, изменяя логику слияния кусков данных. Все строки с одинаковым первичным ключом (точнее, с одинаковым ключом сортировки) ClickHouse заменяет на одну (в пределах одного куска данных), которая хранит объединение состояний агрегатных функций.

Таблицы типа AggregatingMergeTree могут использоваться для инкрементальной агрегации данных, в том числе, для агрегирующих материализованных представлений.

Движок обрабатывает все столбцы типа AggregateFunction.

Использование AggregatingMergeTree оправдано только в том случае, когда это уменьшает количество строк на порядки.

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

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

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

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

Устаревший способ создания таблицы
Важно

Не используйте этот способ в новых проектах и по возможности переведите старые проекты на способ описанный выше.

Все параметры имеют то же значение, что в и MergeTree.

SELECT/INSERT данных

Для вставки данных используйте INSERT SELECT с агрегатными -State-функциями.

При выборке данных из таблицы AggregatingMergeTree, используйте GROUP BY и те же агрегатные функции, что и при вставке данных, но с суффиксом -Merge.

В запросах SELECT значения типа AggregateFunction выводятся во всех форматах, которые поддерживает ClickHouse, в виде implementation-specific бинарных данных. Если с помощью SELECT выполнить дамп данных, например, в формат TabSeparated, то потом этот дамп можно загрузить обратно с помощью запроса INSERT.

Пример агрегирущего материализованного представления

Создаём материализованное представление типа AggregatingMergeTree, следящее за таблицей test.visits:

Вставляем данные в таблицу test.visits:

Данные окажутся и в таблице и в представлении test.basic, которое выполнит агрегацию.

Чтобы получить агрегированные данные, выполним запрос вида SELECT ... GROUP BY ... из представления test.basic: