- Подготовка данных
1.1. Постановка задачи и анализ датасета
1.2. Создание физической модели
1.3. Загрузка данных
1.4. Создание логической модели - Анализ данных
2.1. Построение OLAP-представления - Презентация
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. Для этого необходимо выполнить следующие шаги:
- Создать Источник данных на внутреннем соединении
- Создать куб
2.1. Создать в кубе локальные размерности
2.2. Создать в кубе меры - Создать общую размерность и добавить ее в куб
Шаг 1. Создание Источника данных на внутреннем соединении
-
Для добавления нового источника данных, пройдите в раздел “Аналитическое хранилище данных” (далее - АХД) в аккордеоне системы, выберите узел “Источники данных” и нажмите на кнопку “Создать” в соответствующем разделе либо каталоге источников данных.
-
В окне создания источника данных:
- Выберите тип соединение Rdbms - внутреннее соединение, которое используется для создания кубов на основе бизнес-объектовов с типом хранилища “Таблица”.
- Задайте “Код” и “Наименование” источника данных.
- Сохраните источник и нажмите на кнопку “Опубликовать”. У источника появится дерево для создания объектов АХД.
- Далее необходимо провести синхронизацию. В АХД синхронизацию можно запускать:
- на уровне всей схемы – по кнопке в главном меню;
- только на уровне АХД, выбрав узел “Источники данных” и нажав “OLAP-сервер” – “Синхронизировать схему”;
- только на уровне отдельного источника данных, выбрав узел “RDBMS” и нажав “OLAP-сервер” – “Синхронизировать RDBMS”;
Синхронизацию можно провести сразу после создания источника данных или после того, как внутри источника данных будут созданы кубы и/или общие размерности. Если при создании кубов и/или общих размерностей источник еще не был опубликован, то в момент синхронизации его дочерних объектов будет выведено соответствующее предупреждение Системы.
Шаг 2. Создание куба
-
Выделите узел “Кубы”, нажмите на кнопку “Создать” и выберете пункт “Куб”.
-
В окне редактора метаописания куба введите “Код” и “Наименование” куба. В поле “Хранилище” выберите БО “SuperStoreUS”. На данных этого БО будут созданы размерности и меры куба.
Шаг 2.1. Создание локальных размерностей
Требуется создать 4 локальные размерности: Клиент, Товар, Регион, Заказ. Размерность Регион содержит 2 иерархии, остальные - по одной. Иерархии имеют разное количество уровней. Вся необходимая информация для создания размерностей содержится в таблице с локальными размерностями выше.
Создадим локальную размерность “Товар”. Она содержит одну трехуровневую иерархию. Для этого проделайте следующие шаги.
- Выделите узел “Локальные размерности” и нажмите кнопку “Добавить”. Задайте “Код” и “Наименование” размерности
- Раскройте узел созданной размерности, выделите узел “Иерархии” и нажмите на кнопку “Добавить”. Задайте “Код” и “Наименование” иерархии
- Раскройте узел созданной иерархии и нажмите на кнопку “Добавить”. Добавьте уровень “Категория”. Задайте для него “Код” и “Наименование”. Выберите поле “Product Category [product_category]” в хранилище (поле бизнес-объекта). Тип уровня и порядковый номер уровня в иерархии оставьте без изменений.
- Снова выделите узел “Уровни” и нажмите на кнопку “Добавить”. Добавьте уровень ”Подкатегория”. В качестве поля в хранилище выберете “Product Sub-Category [product_subcategory]”. Порядковый номер уровня в иерархии - 2.
- По аналогии добавьте уровень “Товар”. Поле в хранилище - “Product Name [product_name]”, порядковый номер уровня в иерархии - 3.
- Таким образом, вы создали первую локальную размерность. Создайте аналогично еще три, используя данные из таблицы со списком размерностей.
Шаг 2.2. Создание мер
В кубе создадим меры с базовой агрегацией: Продажи, Прибыль, Средняя цена и Количество заказов. Расчетные меры создадим на следующем шаге в специальном инструменте для построения OLAP-представлений и расчета мер любой сложности с помощью MDX-запросов. Вся необходимая информация для создания мер содержится в таблице с элементами куба выше.
- Выделите узел “Меры” и нажмите на кнопку “Добавить”. Выберете в качестве поля в хранилище значение “Sales [sales]”. Заполните “Код” и “Наименование” меры. А также тип агрегации значений из выпадающего списка - “Сумма”.
- Для оставшихся трех мер повторите алгоритм, используя данные из таблицы со списком мер выше.
- Сохраните куб. После сохранения кнопка “Опубликовать” станет активной. Опубликуйте куб и синхронизируйте схему. Как и в БО, при первой публикации запрашивается окно с множественным выбором из списка ролей. Необходимо выбрать роли, для которых будет доступен данный объект в OLAP-представлении.
На этом этапе куб успешно создан.
Шаг 3. Создание общей размерности
Теперь перейдем к созданию общей размерности. Как было сказано выше, данные для общей размерности хранятся в отдельной таблице. В данном случае в БО “datepicker”, который был создан специально для этой цели. БО для общей размерности должно содержать поле с первичным ключом, все значения которого уникальны. В данном случае это поле с датой. После создания общей размерности ее необходимо добавить к уже созданному кубу.
- Перейдите к узлу “Общие размерности” и нажмите на кнопку “Создать общую размерность”.
- Заполните “Наименование” и “Код” размерности. В качестве хранилища выберите БО “datepicker”.
- Перейдите к узлу “Иерархии” и добавьте новую иерархию. Заполнение будет аналогичным процессу создания локальной размерности, но необходимо заполнить поле “Поле в хранилище - первичный ключ”, выбрав поле “Дата [date]”.
- Создайте три уровня иерархии: Год, Месяц и День. На каждом уровне в качестве поля в хранилище укажите поле, которое хранит соответствующий идентификатор (например, «Год (число)»). В поле «Поле в хранилище для заголовка» укажите поле, содержащее соответствующее наименование (например, “Год”), чтобы вместо номера года отображалось его название (например, “2015 год”)
-
Убедитесь, что номера уровней расположены в порядке возрастания: Год – 1 уровень, День – 3 уровень. В противном случае вычисление агрегатов на уровнях и раскрытие иерархий могут быть некорректными.
-
Тип уровня выберете соответственно “Дата/Год”, “Дата/Месяц”, “Дата/День”. Тип уровня используется только для создания временной размерности.
Временная размерность — это особый тип общей размерности, который позволяет использовать функции по работе с периодами в MDX-запросах (примеры таких запросов можно найти в статье по ссылке).
- Сохраните общую размерность и опубликуйте ее.
- Теперь необходимо добавить созданную общую размерность в куб. Для этого перейдите в режим редактирования куба “superStoreUS”. Выберите узел “Используемые общие размерности” и нажмите на кнопку “Добавить”.
- В поле “Общая размерность” выберите ранее созданную размерность из каталога. Поля “Код” и “Наименование” автоматически заполнятся из свойств общей размерности, при необходимости вы можете изменить наименование. Затем выберите поле куба, по которому он будет связан с общей размерностью (Order Date [order_date]).
- Сохраните изменения в кубе, опубликуйте его и синхронизируйте схему АХД.
На этом процесс создания логической модели в Alpha BI, состоящей из одного куба с одной общей размерностью завершен. Мы закончили рассмотрение этапа подготовки данных.