Метод группировки обеспечивает обобщение данных, представление их в компактном виде и создаёт основу для последовательного анализа. С помощью группировки объединяют данные по существенному признаку, агрегируют числа, рассчитывают общие и промежуточные итоги, появляется возможность сравнения групп и изучения взаимосвязи между ними, анализа причин различий между группами.
В 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-запроса» для автоматического заполнения названий и типов полей БО.
Сохраняем и опубликовываем бизнес-объект, синхронизируем схему. Нажимаем кнопку “Просмотр данных” и в окне просмотра получаем сгруппированные строки:
Если тип поля по умолчанию не подходит, нужно задать типы полей в БО и форматы чисел вручную, сохранить и опубликовать бизнес-объект, синхронизировать схему и открыть просмотр данных бизнес-объекта. Числа отображаются в заданном формате.
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-представления и как источник регламентного отчета | Требуются |
Форма | Доступна | Сумма, Среднее | Доступен в сгруппированном и разгруппированном виде из формы | Не требуются |