avgMergeState
Описание
Комбинатор MergeState
может быть применён к функции avg
для объединения частичных агрегатных состояний типа AverageFunction(avg, T) и
формирования нового промежуточного агрегатного состояния.
Пример использования
Комбинатор MergeState особенно полезен в сценариях многоуровневой агрегации,
когда требуется объединять предварительно агрегированные состояния и сохранять их
в виде состояний (а не финализировать) для дальнейшей обработки. Для примера
рассмотрим случай, в котором мы преобразуем отдельные метрики производительности
серверов в иерархические агрегации на нескольких уровнях: уровень сервера →
уровень региона → уровень датацентра.
Сначала создадим таблицу для хранения исходных данных:
Мы создадим целевую агрегирующую таблицу на уровне сервера и определим инкрементальное материализованное представление, выполняющее роль триггера вставки для неё:
Сделаем то же самое для уровня региона и уровня дата-центра:
Затем вставим пример сырых данных в исходную таблицу:
Мы напишем по три запроса для каждого уровня:
- Уровень сервиса
- Региональный уровень
- Уровень датацентра
Мы можем добавить больше данных:
Давайте ещё раз проверим производительность на уровне дата-центра. Обратите внимание, как вся цепочка агрегации обновилась автоматически: