Перейти к основному содержимому
Перейти к основному содержимому

minSimpleState

Description

Комбинатор SimpleState может быть применен к функции min для получения минимального значения среди всех входных значений. Он возвращает результат с типом SimpleAggregateFunction.

Example Usage

Рассмотрим практический пример использования таблицы, которая отслеживает ежедневные показания температуры. Для каждого местоположения мы хотим поддерживать наиболее низкую зарегистрированную температуру. Использование типа SimpleAggregateFunction с min автоматически обновляет хранимое значение при обнаружении более низкой температуры.

Создайте исходную таблицу для сырых показаний температуры:

Создайте агрегатную таблицу, которая будет хранить минимальные температуры:

Создайте инкрементное материализованное представление, которое будет действовать как триггер вставки для добавленных данных и поддерживать минимальные и максимальные температуры для каждого местоположения.

Вставьте некоторые начальные показания температуры:

Эти показания автоматически обрабатываются материализованным представлением. Давайте проверим текущее состояние:

Вставьте еще данные:

Посмотрите обновленные экстремумы после новых данных:

Обратите внимание, что выше у нас есть два вставленных значения для каждого местоположения. Это происходит потому, что части еще не были объединены (и агрегированы с помощью AggregatingMergeTree). Чтобы получить окончательный результат из частичных состояний, нам нужно добавить GROUP BY:

Теперь мы получаем ожидаемый результат:

примечание

С SimpleState вам не нужно использовать комбинатор Merge для объединения частичных состояний агрегации.

See also