Тип AggregateFunction
Описание
Все агрегатные функции в ClickHouse имеют промежуточное состояние, зависящее от реализации, которое может быть сериализовано в тип данных AggregateFunction
и храниться в таблице. Это обычно происходит с помощью материализованного представления.
Существует два объединителя агрегатных функций combinators, которые обычно используются с типом AggregateFunction
:
- Объединитель агрегатных функций
-State
, который, будучи добавленным к имени агрегатной функции, производит промежуточные состоянияAggregateFunction
. - Объединитель агрегатных функций
-Merge
, который используется для получения окончательного результата агрегации из промежуточных состояний.
Синтаксис
Параметры
aggregate_function_name
- Имя агрегатной функции. Если функция параметризована, то её параметры также должны быть указаны.types_of_arguments
- Типы аргументов агрегатной функции.
например:
Использование
Вставка данных
Чтобы вставить данные в таблицу с колонками типа AggregateFunction
, вы можете использовать INSERT SELECT
с агрегатными функциями и
объединителем агрегатной функции -State
.
Например, чтобы вставить данные в колонки типа AggregateFunction(uniq, UInt64)
и
AggregateFunction(quantiles(0.5, 0.9), UInt64)
, вы можете использовать следующие
агрегатные функции с объединителями.
В отличие от функций uniq
и quantiles
, uniqState
и quantilesState
(с добавленным объединителем -State
) возвращают состояние, а не конечное значение.
Иными словами, они возвращают значение типа AggregateFunction
.
В результатах запроса SELECT
значения типа AggregateFunction
имеют
представления в двоичном формате, специфичные для реализации, для всех форматов
вывода ClickHouse.
Если вы выгрузите данные, например, в формате TabSeparated
с помощью запроса
SELECT
, то этот дамп можно будет загрузить обратно с помощью запроса INSERT
.
Выбор данных
При выборе данных из таблицы AggregatingMergeTree
используйте оператор GROUP BY
и те же агрегатные функции, что и при вставке данных, но используйте
объединитель -Merge
.
Агрегатная функция с добавленным объединителем -Merge
принимает набор состояний,
объединяет их и возвращает результат полной агрегации данных.
Например, следующие два запроса возвращают одинаковый результат:
Пример использования
Смотрите описание движка AggregatingMergeTree.
Связанный контент
- Блог: Использование объединителей агрегатов в ClickHouse
- Объединитель MergeState.
- Объединитель State.