Способы группировки данных

Метод группировки обеспечивает обобщение данных, представление их в компактном виде и создаёт основу для последовательного анализа. С помощью группировки объединяют данные по существенному признаку, агрегируют числа, рассчитывают общие и промежуточные итоги, появляется возможность сравнения групп и изучения взаимосвязи между ними, анализа причин различий между группами.

В AlphaBI группировка доступна на этапе загрузки, чтения и анализа данных. Рассказываем, как она работает на каждом из них.

1. Группировка на этапе загрузки данных

Для хранения данных в агрегированном состоянии можно сгруппировать их перед загрузкой в бизнес-объект (далее - БО) на этапе трансформации . Для этого создаем ETL-процесс:

  • добавляем шаг Обработка → «Группировщик»
  • нажимаем кнопку «Автозаполнение полей»
  • выбираем поле, по которому будут группироваться данные, и поле – по которому они будут агрегироваться
  • указываем тип агрегации – доступен тип «Сумма», «Среднее», «Количество», «Количество уникальных», «Минимум», «Максимум», «Первый»
  • устанавливаем флажок «Накапливать строки перед группировкой»

Так выглядели исходные данные:

А так – сгруппированные:

После записи в БО данные будут храниться в сгруппированном виде и в формате, указанном в настройках полей БО.

2. Группировка на этапе чтения данных

В БО с типом «SQL-запрос» можно выбрать соединение к базе данных (в том числе к РСУБД AlphaBI) и получить сгруппированные данные SQL-запросом на диалекте, поддерживаемым БД выбранного соединения.
БО с типом хранения «SQL-запрос» не хранит данные физически, а формирует их каждый раз при выполнении запроса. Запрос выполняется каждый раз при обращении к БО, например, при открытии на просмотр, при использовании в качестве источника данных отчета или в блоке ETL.
БО с таким типом является своего рода виртуальным хранилищем и предоставляет доступ к своим данным только на чтение.

Приведем пример получения агрегированных данных из другого БО (таблицы в БД AlphaBI). В нашем примере нужно вывести сумму по каждому департаменту:

Создаем БО с типом «SQL-запрос». По умолчанию в поле «Текст SQL-запроса» уже есть данные:

К текущей записи через запятую добавляем наш запрос. Итоговый будет выглядеть так:

select 1 as "Id", "Department", sum("Int") as "Int"
from bo_for_group
group by "Department"

и нажимаем кнопку «Из полей SQL-запроса» для автоматического заполнения названий и типов полей БО.

Сохраняем и опубликовываем бизнес-объект, синхронизируем схему. Нажимаем кнопку “Просмотр данных” и в окне просмотра получаем сгруппированные строки:

Окно просмотра результата SQL-запроса

Если тип поля по умолчанию не подходит, нужно задать типы полей в БО и форматы чисел вручную, сохранить и опубликовать бизнес-объект, синхронизировать схему и открыть просмотр данных бизнес-объекта. Числа отображаются в заданном формате.

Результат отображения значений с типом "Целое число"

3. Группировка на этапе анализа данных

3.1 Формы

Расширенными возможностями агрегации и группировки данных в реальном времени обладают формы. Процесс создания форм описан в веб-справке.

Редактор форм поддерживает:

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


Выгрузка представления формы доступна как в сгруппированном, так и в развернутом виде.

3.2 OLAP

Для полноценного многомерного анализа AlphaBI используется компонент OLAP-представление.
Для группировки в OLAP-представлении используются уровни иерархии размерности, настраиваемые при создании многомерной модели. Тип агрегации значений устанавливается также в настройках куба. По умолчанию доступны типы “сумма”, “среднее”, “количество”, “количество уникальных”, “минимум” и “максимум”.
Если необходимо использовать иной тип агрегации, то можно использовать расчетную меру и в нее заложить пользовательский тип агрегации с помощью языка многомерных запросов, о нем мы рассказываем в статье Язык MDX. Базовые понятия и термины многомерных выражений, а как написать запрос - показываем в статье Примеры функций MDX.

OLAP-представление позволяет делать группировки по строкам и по столбцам.

Функция скрытия и раскрытия уровней иерархий позволяет управлять глубиной детализации значений размерности. С версии AlphaBI 5.2 в виджете «OLAP-представление» доступно преобразование OLAP-представления в табличную форму, где названия уровней группировки дублируются для каждой строки.

Подробный процесс создания OLAP-представления описан в веб-справке. Покажем, как выглядит группировка в самом OLAP-представлении и в виджете.

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

Выводы

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

Объект системы Группировка в runtime Типы агрегации Экспорт данных Числовые данные
ETL-шаг «Группировщик» Доступна Сумма, Среднее, Количество, Количество уникальных, Минимум, Максимум, Первый Через добавление шага формирования файла выгрузки (любого доступного расширения). Возможно обновление отчета на реестре через запуск ETL-процесса Требуются
Бизнес-объект типа «SQL-запрос» Недоступна SQL-функции агрегации Доступен в сгруппированном виде из режима просмотра БО и как источник данных в регламентном отчете Требуются
OLAP-представление Доступна Сумма, Среднее, Количество, Количество уникальных, Минимум, Максимум, MDX-функции Доступен в сгруппированном виде из редактора OLAP-представления и как источник регламентного отчета Требуются
Форма Доступна Сумма, Среднее Доступен в сгруппированном и разгруппированном виде из формы Не требуются