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

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

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

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

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

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

Например, в источнике содержится информация об остатках отдельных товаров на складе, а нам необходимо получить суммарное количество товаров для каждой категории. Такую задачу можно решить непосредственно на стороне источника, например, с помощью SQL-запроса. Однако Преобразование данных позволяет выполнить группировку внутренними средствами генератора отчетов без изменения исходного запроса.
Как работает группировка данных
При группировке используются два типа полей: Измерение (Dimension) и Показатель (Measure). Измерения определяют значения, по которым данные объединяются в группы, а показатели содержат данные, для которых выполняется агрегирование внутри каждой группы.Например, если использовать идентификатор категории CategoryID как измерение, а количество единиц товара на складе UnitsInStock как показатель и применить функцию Сумма (Sum), можно получить общее количество товаров на складе для каждой категории. Для группировки можно использовать несколько измерений. Например, данные можно сгруппировать сначала по категории, а затем по отдельным товарам внутри нее.
Группировка в Преобразовании данных
Откройте вкладку Словарь (Dictionary), нажмите кнопку Создать (New) и выберите команду Новое преобразование данных (New Data Transformation).
Добавьте в преобразование поля CategoryID и UnitsInStock. Для поля CategoryID установите режим Измерение, а для UnitsInStock – Показатель. Для показателя UnitsInStock выберите функцию агрегирования Sum. После этого данные будут объединены по значениям CategoryID, а для каждой категории будет рассчитана сумма UnitsInStock.

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

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

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