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