- Подготовка данных
1.1. Постановка задачи и анализ датасета
1.2. Создание физической модели
1.3. Загрузка данных
1.4. Создание логической модели - Анализ данных
2.1. Построение OLAP-представления - Презентация
3.1. Контейнеры, виджеты, настройка UI
3.2. События, фильтры
В первой вводной статье проведем краткий анализ датасета, определимся с задачей, которую будем решать, и дадим определения основным понятиям, с которыми столкнемся в процессе.
Будем использовать сценарий построения хранилища “в лоб”, так как в данном гайде рассматриваем решение одноразовой задачи на маленьких объемах данных. Для крупных проектов, предполагающих развитие и наращивание функционала и потенциально большой объем данных, необходима более глубокая аналитическая проработка и использование принципов построения многослойных аналитических хранилищ данных. Более подробно с этой темой можно ознакомиться в статьях здесь и здесь.
Построение хранилища “в лоб” подразумевает минимальный анализ предметной области. Структура датасета полностью перекладывается в один бизнес-объект, на базе которого строится один куб.
Бизнес-объекты (далее – БО) представляют собой описание структуры хранения данных. С помощью БО можно определить структуру и тип хранения данных.
OLAP-куб (или куб) - это многомерный массив данных, содержащий размерности (или измерения) и меры. Подробнее поговорим о кубах в статье, посвященной созданию логической модели данных.
Постановка задачи
Cобрать дашборд по анализу продаж и прибыли мебельного магазина в разрезах по продуктам, регионам, категориям товаров и сегментам клиентов. Итоговый вид дашборда, который необходимо получить:
Анализ данных
Перед тем как приступить к работе в системе, составим представление, с какими данными нам предстоит иметь дело. В материале будем рассматривать популярный датасет SuperStore Sales, а именно его листы Orders и Users. На них собраны данные о покупках клиентов мебельного супермаркета: идентификаторы заказов, товары, клиенты, даты заказа, цены, категории, названия продуктов, менеджеры и прочее:
Лист “Orders”:
Лист “Users”:
Файл с данными можно скачать здесь.
Проанализируем данные в файле, сопоставим с целевым дашбордом и отберем те, которые понадобятся для построения виджетов. Выделим разрезы для анализа - измерения и численные поля - меры:
Виджет “Продажи по сегментам клиентов”
Измерение: Customer Segment
Мера: сумма продаж (Sales)
Виджет “Прибыль корпоративного сегмента по региону”
Измерение: иерархия Region - State or Province - City
Мера: Сумма прибыли (Profit)
Виджет “Прибыль по сегментам клиентов”
Измерение: Customer Segment
Мера: сумма прибыли (Profit)
Виджет “Динамика продаж и прибыли”
Измерение: Order Date (иерархия Месяц - День)
Меры: Сумма продаж и прибыли (Sales, Profit)
Таблица “Прибыль и продажи по менеджерам/округам”
Измерение: иерархия Manager - State or Province
Меры: Сумма продаж и прибыли (Sales, Profit),
продажи прошлого месяца (Sales),
прибыль накопительным итогом (Profit).
Таблица “Заказанные товары по категориям”
Измерение: иерархия Product Category - Product Sub-Category - Product Name
Меры: кол-во заказов (Order ID),
средняя цена (Unit Price),
медианная цена (Unit Price)
Фильтр “Выбор категории”
По полю: Product Category
Фильтр “Месяц”
По полю: Order Date (извлечь месяц)
Фильтр “Сегмент”
По полю: Customer Segment
Для удобства дальнейшей работы измерения/иерархии измерений и меры раскрасим в разные цвета:
Перечислим отобранные на предыдущем шаге поля и их типы:
Заметим, что в данных у нас есть столбец с датой Order Date, а при анализе отчета была выявлена необходимость в дополнительных временных разрезах - месяц и день. Соответственно, при подготовке данных надо это учесть и рассчитать столбцы из поля с датой.
ER-модель
Отобразим результат анализа предметной области с помощью ER-модели. С ее помощью выделяются ключевые сущности и обозначаются связи между этими сущностями:
В следующих статьях на основе проведенного анализа подготовим данные, соберем olap-представления и представим в виде готового отчета. Подготовка данных в свою очередь будет происходить в два этапа: сначала опишем и создадим физическую модель хранения данных, а затем поверх неё построим логическую модель - куб.