Гайд. Часть 2.1. Построение OLAP-представления

В данном цикле статей пошагово рассмотрим создание аналитической панели (дашборда) в BI-системе Alpha BI: от подключения к источнику до готовой панели. В каждой статье цикла будет описан этап создания дашборда:
  1. Подготовка данных
    1.1. Постановка задачи и анализ датасета
    1.2. Создание физической модели
    1.3. Загрузка данных
    1.4. Создание логической модели
  2. Анализ данных
    2.1. Построение OLAP-представления
  3. Презентация
    3.1. Контейнеры, виджеты, настройка UI
    3.2. События, фильтры

В предыдущих статьях цикла мы подготовили данные. Теперь перейдем к этапу анализа данных с помощью функционала построения OLAP-представлений с использованием MDX-запросов. На этом этапе подготовим данные, которые будут служить источниками для виджетов.

OLAP (от англ. OnLine Analytical Processing) – это технология оперативной аналитической обработки данных, основанная на многомерном иерархическом представлении данных и позволяющая создавать произвольные запросы внутри общего массива данных.

OLAP значительно ускоряет процесс обработки запроса и выполнения расчетов, обеспечивая анализ данных в различных разрезах. В Alpha BI для OLAP создаются многомерные кубы в аналитическом хранилище данных. Создание такого куба было рассмотрено в предыдущей статье.

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

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

MDX (от англ. Multidimensional Expressions) - это язык запросов, предназначенный для работы с многомерными структурами данных, подобный SQL, но работающий с измерениями, иерархиями и другими объектами многомерных моделей. Он используется для извлечения, анализа и манипулирования данными в OLAP-серверах.

OLAP-представления в Alpha BI можно создавать в специально-предназначенном для этого разделе “OLAP”, если создаваемые представления представляют собой конечный результат или же предполагается их переиспользование для нескольких отчетов/дашбордов. Либо можно их создать непосредственно в дашборде. В статье рассмотрим второй вариант - создадим дашборд и в нем создадим все необходимые представления.

На дашборде, который необходимо создать, расположено 6 виджетов. Исходя из анализа, проведенного в статье, видим, что два виджета (“Продажи по сегментам клиентов” и “Прибыль по сегментам клиентов”) построены по одному и тому же измерению и отличаются только мерами. Значит для них можно создать один источник с общим измерением и двумя мерами. В итоге необходимо создать 5 OLAP-представлений. Перечислим их:

Виджет Измерения Меры
1 Продажи по сегментам клиентов
Прибыль по сегментам клиентов
Сегмент клиентов Продажи
Прибыль
2 Прибыль корпоративного сегмента по региону Иерархия Регион - Округ - Город Прибыль
3 Динамика продаж и прибыли Иерархия Месяц - День Продажи
Прибыль
4 Прибыль и продажи (менеджер/округ) Иерархия Менеджер - Округ Продажи
Прибыль
Продажи прошлого месяца
Прибыль накопительным итогом
5 Заказанные товары по категориям Иерархия Категория - Подкатегория - Товар Кол-во заказов
Средняя цена
Медианная цена

Сначала создайте аналитическую панель

Для этого:

  1. Из главного меню перейдите в модуль “Аналитические панели” и нажмите на кнопку “Создать аналитическую панель”.

  1. Нажмите кнопку «Меню» и выберите пункт «Свойства». Откроется окно «Свойства аналитической панели». В данном окне укажите наименование создаваемой аналитической панели и, при необходимости, задайте ей фон. После ввода наименования и определения фона нажмите кнопку «ОК». Далее нажмите кнопку image, чтобы аналитическая панель сохранилась и отобразилась в списке аналитических панелей.

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

Создайте первый источник “Продажи по сегментам клиентов”

  1. Для добавления источника нажмите кнопку «Добавить» и выберете пункт “OLAP”. Откроется редактор OLAP-представления

  1. Задайте наименование источника в поле “Заголовок” и в выпадающем списке выберете куб “superStoreUS”.

  1. На вкладке “Куб” отобразятся все размерности и меры куба. Формирование структуры OLAP-представления осуществляется перемещением элементов куба из области источников данных OLAP-представления в область формирования структуры OLAP-представления, состоящую из осей: «Столбцы», «Строки», «Значения» и «Фильтры» с помощью drag-and-drop. Размерности можно добавлять в оси «Столбцы», «Строки» и «Фильтры», предварительно выделив уровень иерархии размерности, а меры - на ось “Значения”. Перенесите иерархию “Сегмент клиента” на ось “Строки” и меру “Продажи” - на ось “Значения”.

  1. Требуется округлить значения меры до тысяч и добавить единицу измерения “₽”. Для этого создайте расчетную меру. Перейдите на вкладку “Запрос” и нажмите кнопку image напротив пункта “Расчетные элементы”. Откроется окно создания расчетного элемента. Задайте наименование расчетной меры и укажите формат значений:

  1. В окне создания расчетного элемента перейдите на вкладку «Формула» и задайте формулу в MDX-формате:

[Measures].[sales]/1000

  1. После того, как формула была прописана, нажмите на кнопку «Применить». В результате «Расчетная мера» отобразится в расчетных элементах. Переместите ее в ось «Значения». А добавленную ранее меру “Продажи” удалите по кнопке image.

  1. Добавьте вторую расчетную меру “Прибыль, тыс ₽” с формулой:

[Measures].[profit]/1000

Переместите ее в ось “Значения”.

  1. Необходимо получить плоскую таблицу, скрыв элемент верхнего уровня “Сегмент клиента“. Для этого нажмите на кнопку настроек

  1. Откроется окно, в котором установкой «флажков» выберите конкретные элементы.

Для удобства измените уровень в выпадающем списке и нажмите на кнопку “Все”.

  1. Отсортируйте таблицу по убыванию суммы продаж. Для этого в области отображения результата вызовите контекстное меню в наименовании столбца “Продажи, тыс ₽”, выберите пункт «Сортировка», а затем тип сортировки - “По убыванию”.

  1. После настройки источника данных нажмите кнопку «Сохранить». Созданный источник может использоваться несколькими виджетами или можно создавать источники для каждого виджета в отдельности.

  1. Сохраните аналитическую панель

Создайте источник “Прибыль корпоративного сегмента по региону”

  1. Скопируйте созданный источник, выделив его и нажав на кнопку “Создать копию”. Откройте новый источник, переименуйте его на “Прибыль корпоративного сегмента по региону”.

  1. Перенесите иерархию “Регион” в ось “Строки”, а расчетную меру “Прибыль, тыс ₽” со вкладки “Запрос” - в ось “Значения”. Скройте элемент верхнего уровня, оставив только дочерние элементы, в настройках иерархии “Регион”. Отсортируйте OLAP-представление по убыванию значения меры.

  1. Требуется отфильтровать представление по сегменту клиента, чтобы отображались только клиенты с категорией “Corporate”. Для этого перенесите иерархию “Сегмент клиента” в ось “Фильтры”. Перейдите в настройки оси и на вкладке “Элементы” проставьте флажок только напротив нужной категории. Нажмите кнопку “Применить”.

  1. Итоговый вид OLAP-представления “Прибыль корпоративного сегмента по региону”:

Сохраните OLAP-представление и аналитическую панель.

Создайте источник “Динамика продаж и прибыли”

  1. Создайте новый источник, переименуйте его на “Динамика продаж и прибыли”, выберете куб “superStoreUS”.
  2. Перенесите иерархию “Дата заказа” в ось “Строки”, а меры “Прибыль” и “Продажи” - в ось “Значения”. В настройках иерархии “Дата заказа” отобразите элементы уровня “Месяц”.

  1. Скройте строки с пустыми значениями, для этого нажмите на кнопку image на оси строк.

  1. Сохраните OLAP-представление и аналитическую панель.

Создайте источник “Прибыль и продажи по менеджерам/округам”

  1. Создайте новый источник, переименуйте его на “Прибыль и продажи по менеджерам/округам”, выберете куб “superStoreUS”.
  2. Перенесите иерархию “Менеджер/Регион” размерности “Регоин” в ось “Строки”, а меры “Прибыль” и “Продажи” - в ось “Значения”. Раскройте иерархию по кнопке image.

  1. Требуется добавить две расчетные меры “Продажи прошлого месяца” и “Прибыль накоп с нач года”.

Формула для расчетной меры “Продажи прошлого месяца”:

sum(
  ParallelPeriod(
    [order_date].[period_ymd_hier].[month],
    1,
    [order_date].[period_ymd_hier].[2015].[2]
  ),
  [Measures].[sales]
)

Здесь ParallelPeriod() - функция, которая возвращает прошлый месяц относительно элемента [order_date].[period_ymd_hier].[2015].[2] (февраль 2015 года). В следующих уроках покажем, как сделать эту формулу динамичной, так чтобы прошлый месяц отсчитывался от выбранного пользователем месяца через фильтр.

Код элемента [order_date].[period_ymd_hier].[2015].[2] можно получить на боковой вкладке “Элементы” редактора формул. Раскройте ее

Раскройте иерархию размерности “Дата заказа” до уровня “Месяц”. Выберите элемент “Февраль”. Дважды кликните по его названию – в область формулы добавится код этого элемента

Функция sum() суммирует значение меры “Продажи” за прошлый месяц.

Формула для расчетной меры “Прибыль накоп с нач года”:

SUM(
  PeriodsToDate(
    [order_date].[period_ymd_hier].DefaultMember,
    [order_date].[period_ymd_hier].[2015].[2]
  ),
  [Measures].[profit]
)

Здесь для текущего элемента суммируются значения меры “Прибыль” от первого элемента уровня (т.е. января 2015 года) до февраля 2015 года.

Функция PeriodsToDate() возвращает набор элементов, начиная с элемента, заданного первым параметром ([order_date].[period_ymd_hier].DefaultMember), и заканчивая элементом, заданным вторым параметром ([order_date].[period_ymd_hier].[2015].[2]).

Аналогично предыдущей формуле в следующих уроках покажем, как сделать ее зависимой от контекста пользовательских фильтров.

  1. Перенесите созданные расчетные меры в ось “Значения”. Итоговый вид представления:

  1. Сохраните OLAP-представление и аналитическую панель.

Создайте источник “Заказанные товары по категориям”

  1. Создайте новый источник, переименуйте его на “Заказанные товары по категориям”, выберете куб “superStoreUS”.
  2. Перенесите иерархию “Категория товара” размерности “Товар” в ось “Строки”, а меры “Кол-во заказов” и “Средняя цена” - в ось “Значения”. Раскройте иерархию по кнопке image.

  1. Добавьте расчетную меру “Медианная цена” со следующей формулой:

MEDIAN({[order_dim].[order_hier].Levels(2).Members},[Measures].[unit_price])

Здесь с помощью функции MEDIAN() рассчитывается медиана для меры “Цена” (unit_price). А в качестве первого параметра указывается набор элементов, уникальный для всех строк в хранилище - элементы 2 уровня “Row ID” иерархии “Заказ”.

  1. Перенесите созданную расчетную меру в ось “Значения”. Итоговый вид представления:

  1. Сохраните OLAP-представление и аналитическую панель.

Вы создали 5 OLAP-представлений, на основе которых в следующем уроке создадите виджеты для аналитической панели.