Комбинатор SimpleState можно применить к функции min,
чтобы получить минимальное значение среди всех входных значений. Он возвращает
результат типа SimpleAggregateFunction.
Рассмотрим практический пример с таблицей, в которой хранятся ежедневные показатели температуры.
Для каждой локации нужно хранить минимальную зарегистрированную температуру.
Использование типа SimpleAggregateFunction с min автоматически обновляет
сохранённое значение при появлении более низкой температуры.
Создайте исходную таблицу для исходных показаний температуры:
Создайте агрегирующую таблицу для хранения минимальных температур:
Создайте Incremental materialized view, который будет служить триггером вставки
для вставляемых данных и поддерживать минимальную и максимальную температуру для каждого местоположения.
Вставьте несколько начальных показаний температуры:
Эти значения автоматически обрабатываются materialized view. Давайте проверим
текущее состояние:
Добавьте ещё немного данных:
Просмотрите обновлённые экстремумы после появления новых данных:
Обратите внимание: выше для каждой локации есть по два вставленных значения. Это потому,
что части ещё не были слиты (и агрегированы с помощью AggregatingMergeTree). Чтобы получить
окончательный результат из частичных состояний, нужно добавить GROUP BY:
Теперь мы получаем ожидаемый результат:
При использовании SimpleState не нужно применять комбинатор Merge для объединения
промежуточных состояний агрегации.
Последнее изменение 2 июля 2026 г.