Агрегация

Рабочий процесс: узел агрегацииCommunity Edition+

Введение

Используется для выполнения запросов агрегирующих функций по данным коллекции, соответствующим заданным условиям, и возвращает соответствующие статистические результаты. Часто применяется для обработки статистики в отчетах.

Реализация узла основана на агрегирующих функциях базы данных. Сейчас поддерживается статистика только по одному полю коллекции. Числовой результат статистики сохраняется в выводе узла для использования последующими узлами.

Установка

Встроенный плагин, установка не требуется.

Создание узла

В интерфейсе настройки рабочего процесса нажмите кнопку плюса (+) в потоке, чтобы добавить узел «Агрегирующий запрос»:

Создание узла агрегации

Настройка узла

Настройка узла агрегации

Агрегирующая функция

Поддерживаются 5 агрегирующих функций SQL: COUNT, SUM, AVG, MIN, MAX. Выберите одну из них для выполнения агрегирующего запроса по данным.

Тип цели

Цель агрегации можно выбрать в двух режимах. Первый — напрямую выбрать целевую коллекцию и одно из её полей. Второй — через существующий объект данных в контексте рабочего процесса выбрать связанную коллекцию «один-ко-многим» и поле для агрегиации.

Уникальные значения

Это DISTINCT в SQL. Поле для дедупликации совпадает с выбранным полем коллекции. Выбирать разные поля для этих двух параметров сейчас нельзя.

Условия фильтрации

Как и в обычном запросе коллекции, в условиях фильтрации можно использовать переменные контекста рабочего процесса.

Пример

Цель агрегации «Данные коллекции» довольно проста для понимания. Здесь на примере «подсчёт общего числа статей в категории после добавления новой статьи» покажем использование цели агрегации «Данные связанной коллекции».

Сначала создайте две коллекции: «Статьи» и «Категории». В коллекции «Статьи» должно быть поле связи «многие-к-одному» с «Категориями», а также должна быть создана обратная связь «один-ко-многим» из «Категорий» в «Статьи»:

Имя поляТип
ЗаголовокОднострочный текст
КатегорияМногие-к-одному (Категории)
Имя поляТип
Название категорииОднострочный текст
СтатьиОдин-ко-многим (Статьи)

Далее создайте рабочий процесс с триггером события коллекции. Настройте его на запуск после добавления новых данных в коллекцию «Статьи».

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

Пример настройки узла агрегирующего запроса

После запуска рабочего процесса узел агрегирующего запроса подсчитает количество всех статей в категории только что добавленной статьи и сохранит это как результат узла.

Подсказка

Если нужно использовать данные связей из триггера события коллекции, обязательно настройте нужные поля в секции триггера «Предзагрузка связанных данных», иначе выбрать их будет нельзя.