Обсудить
бизнес-задачи

Разработка OLAP-куба в Alpha BI

блог о bi, №1 в рунете
В эпоху data-driven управления бизнесом особую значимость приобретают технологии оперативной аналитической обработки данных. Несмотря на историческое лидерство западных BI-инструментов, российский сегмент решений для многомерного анализа демонстрирует впечатляющую динамику развития, что стимулирует компании к импортозамещению инфраструктуры. В фокусе настоящего исследования — платформа Alpha BI, предоставляющая комплексный инструментарий для построения аналитики. В данном исследовании детально рассматривается процесс проектирования OLAP-куба.
ВАЖНО: предполагается, что перед началом создания OLAP-куба, у вас созданы необходимые для куба бизнес-объекты. Подробнее о создании бизнес-объектов и их заполнении описано в статье «Разработка бизнес-объектов и ETL-процессов».

Создание источника данных

Перед началом разработки OLAP-куба необходимо создать бизнес-объекты, которые будут служить основой для дальнейшего моделирования данных. Для этого:
  1. Перейдите на вкладку «Система»
  2. Выберите раздел «Аналитическое хранилище данных»
  3. Нажмите на «Источники данных»
  4. Нажмите на кнопку «Создать» -> «Источник данных»
В открывшемся окне необходимо заполнить поле «Код» (идентификатор источника данных), «Наименование» и выбрать подключение. В данном случае, источником является на внутренний DWH, поэтому выбираем подключение «Rdbms». При работе с Oracle, PostgreSql или ClickHouse в качестве DWH, куб можно разработать на основании прямого подключения (без извлечения данных во внутреннюю DWH Alpha BI).
Сохраните изменения источника, опубликуйте его и синхронизируйте схему. После этого шага для разработки становятся доступны три раздела: «Общие размерности», «Кубы», «Виртуальные кубы».

Разработка размерностей/измерений

Разработаем общую размерность «Регионы» (Общая размерность в привычном понимании является измерением куба, построенным на внешней таблице, которая связывается по ID с таблицей фактов).

Для создания размерности выберите «Общие размерности», далее нажмите «Создать» - «Общая размерность».
Заполните поля «Наименование» и «Код» (в данной форме они поменяны местами). В качестве хранилища выберите созданный и заполненный ранее бизнес-объект (в данном случае бизнес-объектом является таблица «Регионы»).
Для размерности необходимо создать как минимум одну иерархию.

Создадим иерархию «Регионы». Для этого выделите «Иерархии», затем нажмите кнопку «Добавить». В появившейся пустой иерархии необходимо заполнить поля «Код» и «Наименование», а также выбрать первичный ключ иерархии.

Перейдите в раздел «Уровни» и нажмите «Добавить», заполните обязательные поля «Код» и «Наименование», выберите уровень иерархии (в данном случае используется уровень 1, заданный по умолчанию). Поле «Тип» предназначено прежде всего для создания размерности календаря.

Выберите поле в хранилище, которое является идентификатором уровня (в примере - уникальное поле RegionID). Для наименования необходимо выбрать поле наименование.

Элементы уровней могут содержать дополнительную информацию (например, у региона может быть указан его часовой пояс или код ОКАТО). Чтобы отразить эту информацию, необходимо создать атрибут.
Для добавления атрибутов, раскройте необходимый уровень, нажмите «Атрибуты» -> «Добавить». Для атрибутов необходимо заполнить поля «Код», «Наименование» и «Поле в хранилище».

Нажмите «Сохранить изменения», нажмите «Опубликовать» и синхронизируйте схему. Базовый справочник создан.

Данный алгоритм необходимо повторить для всех необходимых в вашем кубе справочников.
Рассмотрим разработку справочника «Календарь», т.к. он является наглядным примером иерархичного справочника.

Разработка общей размерности остается неизменным. Добавьте иерархию Г-М-Д (Год-месяц-дата) по предыдущему образцу. В разделе «Уровни» необходимо создать несколько уровней иерархии вместо одного (в данном случае, три: «Год», «Год-месяц», «Год-месяц-дата»).

Уровню «Год» задаём тип «Дата/Год», уровню «Год-месяц» задаём тип «Дата/Месяц» и порядковый номер уровня иерархии = 2. Аналогичные действия проделываем для последнего уровня «Год-месяц-дата», установив номер уровня = 3 и задав тип «Дата/День». Дополнительно отмечаем флаг «Уникальные элементы на этом уровне иерархии». Сохраните размерность, опубликуйте её и синхронизируйте схему.

Измерение календарь необходимо для работы некоторого функционала (например, получения данных за параллельный период).

Разработка куба

Разработаем примитивный куб. Для этого выберите в источнике данных «Кубы» и нажмите «Создать куб». Заполните поля «Наименование» и «Код».
В качестве хранилища используйте ранее созданный бизнес-объект, который олицетворяет таблицу фактов (В примере будет использоваться факт «Продажи». Структура таблицы представлена на изображении).

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

Локальные размерности используются, если имеющиеся данные денормализованы. В таком случае, можно создать размерности на основании данных из той же таблицы. В иных случаях рекомендуется использовать общие размерности через связку с фактом по ID.
Добавьте в куб общую размерность «Регионы», связав куб и размерность по RegionID. Создайте простую меру (например, «Сумма продаж, руб», которая будет суммировать значения столбца SaleNet).

Сохраните куб, опубликуйте его и синхронизируйте схему. Куб готов. Протестируйте работоспособность куба. Перейдите в раздел «OLAP» и создайте представление куба.
Выберите разработанный куб. В разделе «Куб» отобразятся разделы «Меры» и все размерности, которые были присвоены кубу. Выберите уровень «Регионы» размерности «Регионы» и перенесите в область «Строки». Меру «Сумма продаж, руб» перенесите в значения.

В результате отобразится значение меры для всего уровня «Регионы». При нажатии на «+» список регионов развернется, и отобразится детализация продаж по регионам.
Для отображения атрибутов, необходимо нажать на значок шестеренок рядом с используемым уровнем. Выберите пункт «Атрибуты» и перенесите необходимые атрибуты из левого столбца (доступные атрибуты) в правый столбец (отображаемые атрибуты).
При необходимости отображать значение атрибута вместо основного заголовка, на вкладке опции выберите в качестве отображаемого поля необходимый атрибут.