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

avgMergeState

Описание

Комбинатор MergeState можно применять к функции avg, чтобы объединить частичные состояния агрегатов типа AverageFunction(avg, T) и вернуть новое промежуточное состояние агрегации.

Пример использования

Комбинатор MergeState особенно полезен для сценариев агрегации многоуровневой структуры, когда вы хотите объединить предварительно агрегированные состояния и сохранить их в виде состояний (а не финализировать) для дальнейшей обработки. Чтобы проиллюстрировать, мы рассмотрим пример, в котором мы преобразуем индивидуальные метрики производительности серверов в иерархические агрегации на нескольких уровнях: уровень сервера → уровень региона → уровень датацентра.

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

Создадим целевую таблицу агрегации на уровне сервера и определим инкрементное материализованное представление, действующее как триггер вставки:

То же самое мы сделаем для уровней региона и датацентра:

Затем мы вставим образцы сырых данных в исходную таблицу:

Напишем три запроса для каждого из уровней:

Мы можем вставить больше данных:

Давайте еще раз проверим производительность на уровне датацентра. Обратите внимание, как вся цепочка агрегации обновилась автоматически:

См. также