Продолжаем цикл статей о Преобразовании данных (Data Transformation) в продуктах Стимулсофт. Ранее мы рассказывали об объединении таблиц и расчете нарастающего итога. В этой статье рассмотрим группировку данных и покажем, как с ее помощью получать итоговые значения для использования в отчетах и дашбордах.
В качестве примера будем использовать отчет Chart on Data Band и содержащиеся в нем данные о товарах и категориях.

Отчет Chart on Data Band в режиме предварительного просмотра
Например, в источнике содержится информация об остатках отдельных товаров на складе, а нам необходимо получить суммарное количество товаров для каждой категории. Такую задачу можно решить непосредственно на стороне источника, например, с помощью SQL-запроса. Однако Преобразование данных позволяет выполнить группировку внутренними средствами генератора отчетов без изменения исходного запроса.

Как работает группировка данных

При группировке используются два типа полей: Измерение (Dimension) и Показатель (Measure). Измерения определяют значения, по которым данные объединяются в группы, а показатели содержат данные, для которых выполняется агрегирование внутри каждой группы.

Например, если использовать идентификатор категории CategoryID как измерение, а количество единиц товара на складе UnitsInStock как показатель и применить функцию Сумма (Sum), можно получить общее количество товаров на складе для каждой категории. Для группировки можно использовать несколько измерений. Например, данные можно сгруппировать сначала по категории, а затем по отдельным товарам внутри нее.

Группировка в Преобразовании данных

Откройте вкладку Словарь (Dictionary), нажмите кнопку Создать (New) и выберите команду Новое преобразование данных (New Data Transformation).

Команда Новое преобразование данных в меню Создать словаря
Добавьте в преобразование поля CategoryID и UnitsInStock. Для поля CategoryID установите режим Измерение, а для UnitsInStock – Показатель. Для показателя UnitsInStock выберите функцию агрегирования Sum. После этого данные будут объединены по значениям CategoryID, а для каждой категории будет рассчитана сумма UnitsInStock.

Данные, сгруппированные по CategoryID, с суммой UnitsInStock

Несколько уровней группировки

При необходимости группировку можно сделать более детальной, используя несколько измерений. В выбранном примере таблицы Products и Categories связаны между собой. Поэтому в одном преобразовании можно использовать название категории CategoryName из таблицы Categories и данные о товарах из таблицы Products.

Добавьте в преобразование поля CategoryName, ProductName и UnitsInStock. Поля CategoryName и ProductName установите как Измерения, а UnitsInStock – как Показатель. Для UnitsInStock используйте функцию Sum. В результате данные будут сгруппированы по товарам внутри соответствующих категорий.

Данные, сгруппированные по CategoryName и ProductName
Чтобы получить следующий уровень группировки, переключите ProductName из режима Измерение в режим Показатель и примените к нему функцию Count. CategoryName останется единственным измерением, а UnitsInStock – показателем с функцией Сумма. В результате для каждой категории можно получить количество входящих в нее товаров и их суммарное количество на складе. Например, для категории Beverages в нашем примере отображаются 12 товаров и 559 единиц на складе.

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

Особенности работы со сгруппированными данными

При использовании других действий Преобразования данных важно учитывать, на каком этапе они применяются – до или после группировки. Некоторые действия могут выполняться как над исходными строками, так и над уже сгруппированными данными. Например, при ограничении количества строк можно определить, следует ли применять ограничение к исходным данным или к результату группировки. Подробнее такие настройки рассмотрим в отдельной статье цикла.

Заключение

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