Гайд. Часть 1.4. Создание логической модели

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

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

OLAP-куб (или куб) - это многомерный массив данных, содержащий размерности (или измерения) и меры. Размерности (измерения) представляют собой оси координат, а меры — значения, расположенные в ячейках куба.

В контексте AlphaBI Куб – метаописание многомерного объекта, которое содержит информацию о физическом хранении аналитических данных (Соединение + таблица/запрос в БД), логической связи элементов хранилища и способов агрегации.

Размерности отражают различные аспекты деятельности организации (товар, продавец, организация), а меры – количественные показатели этих аспектов, которые можно посчитать.

Размерность состоит из:

  • Иерархии - представляют организационную структуру, которая описывает модель доступа к кубу данных через размерность.

  • Уровни - описывают иерархию построения данных. Самый простой пример: Год-Полугодие-Квартал-Месяц-День.

Размерности могут быть общими и локальными.

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

Общие размерности – те, которые могут быть использованы одновременно в нескольких кубах. Данные размерности хранятся в отдельной таблице и с таблицей фактов связываются по уникальному ключу. Они удобны в случае, когда размерность основана на универсальных данных, применимых для анализа различных предметных областей (примером может служить размерность “Период”).

Проектирование логической модели

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

Размерности:

Размерность Иерархия Уровни Поле из БО
Локальные размерности
1 Клиент Сегмент клиента Сегмента клиента Customer Segment
2 Товар Товар 1. Категория
2. Подкатегория
3. Товар
1. Product Category
2. Product Sub-Category
3. Product Name
3.1 Регион Регион 1. Регион
2. Район
3. Город
1. Region
2. State or Province
3. City
3.2 Регион Менеджер/регион 1. Менеджер
2. Район
1. Manager
2. State or Province
4 Заказ Заказ 1. Order ID
2. Row ID
1. Order ID
2. Row ID
Общие размерности
5 Период Период 1. Год
2. Месяц
3. День
1. Year
2. Month
3. Day

Меры:

Мера Поле из БО Тип агрегации
Меры с базовой агрегацией
1 Продажи Sales Сумма
2 Прибыль Profit Сумма
3 Средняя цена Unit Price Среднее
4 Количество заказов Order ID Количество уникальных
Расчетные меры
5 Медианная цена Unit Price Медиана
6 Продажи прошлого месяца Sales Сумма за прошлый период
7 Прибыль накопительным итогом Profit Накопительный итог

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

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

Теперь составим схему многомерной модели, состоящей из всех перечисленных выше элементов:

Создание логической модели

После построение многомерное модели будущего куба создадим куб инструментами Alpha BI. Для этого необходимо выполнить следующие шаги:

  1. Создать Источник данных на внутреннем соединении
  2. Создать куб
    2.1. Создать в кубе локальные размерности
    2.2. Создать в кубе меры
  3. Создать общую размерность и добавить ее в куб

Шаг 1. Создание Источника данных на внутреннем соединении

  1. Для добавления нового источника данных, пройдите в раздел “Аналитическое хранилище данных” (далее - АХД) в аккордеоне системы, выберите узел “Источники данных” и нажмите на кнопку “Создать” в соответствующем разделе либо каталоге источников данных.

  2. В окне создания источника данных:

  • Выберите тип соединение Rdbms - внутреннее соединение, которое используется для создания кубов на основе бизнес-объектовов с типом хранилища “Таблица”.
  • Задайте “Код” и “Наименование” источника данных.

  1. Сохраните источник и нажмите на кнопку “Опубликовать”. У источника появится дерево для создания объектов АХД.

  1. Далее необходимо провести синхронизацию. В АХД синхронизацию можно запускать:
  • на уровне всей схемы – по кнопке в главном меню;
  • только на уровне АХД, выбрав узел “Источники данных” и нажав “OLAP-сервер” – “Синхронизировать схему”;

  • только на уровне отдельного источника данных, выбрав узел “RDBMS” и нажав “OLAP-сервер” – “Синхронизировать RDBMS”;

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

Шаг 2. Создание куба

  1. Выделите узел “Кубы”, нажмите на кнопку “Создать” и выберете пункт “Куб”.

  2. В окне редактора метаописания куба введите “Код” и “Наименование” куба. В поле “Хранилище” выберите БО “SuperStoreUS”. На данных этого БО будут созданы размерности и меры куба.

Шаг 2.1. Создание локальных размерностей

Требуется создать 4 локальные размерности: Клиент, Товар, Регион, Заказ. Размерность Регион содержит 2 иерархии, остальные - по одной. Иерархии имеют разное количество уровней. Вся необходимая информация для создания размерностей содержится в таблице с локальными размерностями выше.

Создадим локальную размерность “Товар”. Она содержит одну трехуровневую иерархию. Для этого проделайте следующие шаги.

  1. Выделите узел “Локальные размерности” и нажмите кнопку “Добавить”. Задайте “Код” и “Наименование” размерности

  1. Раскройте узел созданной размерности, выделите узел “Иерархии” и нажмите на кнопку “Добавить”. Задайте “Код” и “Наименование” иерархии

  1. Раскройте узел созданной иерархии и нажмите на кнопку “Добавить”. Добавьте уровень “Категория”. Задайте для него “Код” и “Наименование”. Выберите поле “Product Category [product_category]” в хранилище (поле бизнес-объекта). Тип уровня и порядковый номер уровня в иерархии оставьте без изменений.

  1. Снова выделите узел “Уровни” и нажмите на кнопку “Добавить”. Добавьте уровень ”Подкатегория”. В качестве поля в хранилище выберете “Product Sub-Category [product_subcategory]”. Порядковый номер уровня в иерархии - 2.

  1. По аналогии добавьте уровень “Товар”. Поле в хранилище - “Product Name [product_name]”, порядковый номер уровня в иерархии - 3.

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

Шаг 2.2. Создание мер

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

  1. Выделите узел “Меры” и нажмите на кнопку “Добавить”. Выберете в качестве поля в хранилище значение “Sales [sales]”. Заполните “Код” и “Наименование” меры. А также тип агрегации значений из выпадающего списка - “Сумма”.

  1. Для оставшихся трех мер повторите алгоритм, используя данные из таблицы со списком мер выше.
  2. Сохраните куб. После сохранения кнопка “Опубликовать” станет активной. Опубликуйте куб и синхронизируйте схему. Как и в БО, при первой публикации запрашивается окно с множественным выбором из списка ролей. Необходимо выбрать роли, для которых будет доступен данный объект в OLAP-представлении.

На этом этапе куб успешно создан.

Шаг 3. Создание общей размерности

Теперь перейдем к созданию общей размерности. Как было сказано выше, данные для общей размерности хранятся в отдельной таблице. В данном случае в БО “datepicker”, который был создан специально для этой цели. БО для общей размерности должно содержать поле с первичным ключом, все значения которого уникальны. В данном случае это поле с датой. После создания общей размерности ее необходимо добавить к уже созданному кубу.

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

  1. Заполните “Наименование” и “Код” размерности. В качестве хранилища выберите БО “datepicker”.

  1. Перейдите к узлу “Иерархии” и добавьте новую иерархию. Заполнение будет аналогичным процессу создания локальной размерности, но необходимо заполнить поле “Поле в хранилище - первичный ключ”, выбрав поле “Дата [date]”.

  1. Создайте три уровня иерархии: Год, Месяц и День. На каждом уровне в качестве поля в хранилище укажите поле, которое хранит соответствующий идентификатор (например, «Год (число)»). В поле «Поле в хранилище для заголовка» укажите поле, содержащее соответствующее наименование (например, “Год”), чтобы вместо номера года отображалось его название (например, “2015 год”)
  • Убедитесь, что номера уровней расположены в порядке возрастания: Год – 1 уровень, День – 3 уровень. В противном случае вычисление агрегатов на уровнях и раскрытие иерархий могут быть некорректными.

  • Тип уровня выберете соответственно “Дата/Год”, “Дата/Месяц”, “Дата/День”. Тип уровня используется только для создания временной размерности.

Временная размерность — это особый тип общей размерности, который позволяет использовать функции по работе с периодами в MDX-запросах (примеры таких запросов можно найти в статье по ссылке).

  1. Сохраните общую размерность и опубликуйте ее.
  2. Теперь необходимо добавить созданную общую размерность в куб. Для этого перейдите в режим редактирования куба “superStoreUS”. Выберите узел “Используемые общие размерности” и нажмите на кнопку “Добавить”.
  3. В поле “Общая размерность” выберите ранее созданную размерность из каталога. Поля “Код” и “Наименование” автоматически заполнятся из свойств общей размерности, при необходимости вы можете изменить наименование. Затем выберите поле куба, по которому он будет связан с общей размерностью (Order Date [order_date]).

  1. Сохраните изменения в кубе, опубликуйте его и синхронизируйте схему АХД.

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