Введение в OLAP и хранилища данных

ETL процедура. Описание источника данных. Часть 1

Практическое занятие посвящено построению хранилища данных по схеме «звезда» и реализации упрощённого процесса ETL (Extract, Transform, Load — извлечение, преобразование, загрузка) из транзакционной системы. Рассматривается состав измерений — персонал, продукт, доставка, время, — а также показателей — объём продаж и количество. Показана логика проектирования: от требований анализа к выбору источника, атрибутов, целевых таблиц и возможных аналитических срезов.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснять роль ETL при переносе данных из OLTP-системы в хранилище.
2. Определять состав измерений и показателей для схемы «звезда».
3. Различать атрибуты измерений «Персонал», «Продукт», «Доставка» и «Время».
4. Применять правило фиксации цены продукта на момент продажи.
5. Анализировать, какие виды анализа позволяют выполнить выбранные измерения и показатели.
6. Оценивать, какие данные нужны для практической задачи, а какие избыточны.
Показывать лекцию целиком
Краткое изложение

 

Для лекции используйте файл AdventureWorks2017.bak (необходимо распаковать).

 

Приложения

AdventureWorks2017.bak

1. Введение

Мы продолжаем курс, посвящённый хранилищам данных. Сегодня практическое занятие. Хранилище данных (Data Warehouse, DW) включает много компонентов. Первый этап — собрать информацию из разных транзакционных систем, то есть из OLTP-систем (On-Line Transaction Processing — оперативная обработка транзакций).

Для этого нужно реализовать ETL-процедуру (Extract, Transform, Load — извлечение, преобразование, загрузка). В простом варианте мы извлечём данные из одной базы, преобразуем их и загрузим в централизованное хранилище.

2. Схема хранилища

Хранилище организуем по схеме «звезда» (star schema). В центре находится таблица фактов, к ней присоединены таблицы измерений (dimensions). Перед реализацией нужно понять, какие данные необходимы, какие преобразования выполнить и в какие целевые таблицы загрузить результат.

3. Постановка задачи

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

3.1 Измерение «Персонал»

Нужно знать группу отдела, отдел, фамилию, имя, отчество сотрудника, его дату рождения и пол. Это позволяет анализировать продажи не только по отдельным продавцам, но и по отделам и группам отделов.

3.2 Измерение «Продукт»

По продукту важны категория, подкатегория, наименование, цена по прайс-листу с учётом времени появления заказа и номер продукта. Номер продукта — это идентификатор, похожий на артикул или штрих-код.

Цена продукта должна быть актуальной на момент продажи. Текущая цена может отличаться: за время после продажи она могла быть проиндексирована или изменена. Поэтому нельзя подменять историческую цену сегодняшней.

3.3 Измерение «Доставка»

Нас интересует территориальная принадлежность покупателя, но не его фамилия, имя, отчество. Нужны страна, код страны, регион, код региона, город и код города. Это даёт агрегацию до уровня региона и страны.

3.4 Измерение «Время»

Время присутствует в любом кубе. В данном случае оно учитывается с точностью до дня. Конкретное время продажи в минутах или секундах не интересует: порядок продаж внутри дня не важен для запланированного анализа.

4. Показатели

В рамках этих измерений считаются два показателя: объём продаж и количество. Объём продаж — это выручка в денежном выражении. Количество — это число проданных штук. Эти показатели считаются в разрезе времени, города доставки, продукта и продавца.

5. Возможности анализа

Такая модель позволяет проанализировать, какие продавцы эффективнее продают какой товар. Можно узнать, в каком городе наиболее востребована определённая категория продуктов. Можно оценить периодичность продаж и сезонность. Даже скромный набор данных даёт широкий спектр анализа для увеличения продаж и прибыли.

6. Источник данных

Источник — транзакционная база данных магазина. В качестве учебной базы используется база Microsoft AdventureWorks. Есть версии 2012, 2014, 2016, 2017. Мы работаем с SQL Server 2017, поэтому используем AdventureWorks 2017.

Эта база посвящена магазину, который торгует спортивными велосипедами и аксессуарами. У магазина есть розничные точки продаж и интернет-магазин, а также доставка по всему миру. База учебная, но её структура близка к структуре реального магазина. Далее нужно детально рассмотреть таблицы и связи между ними.

Краткие итоги

Практическая ценность хранилища проявляется тогда, когда аналитические вопросы сформулированы до выбора таблиц и процедур. Если бизнесу нужны продажи в разрезе продавцов, товаров, географии и времени, это сразу задаёт архитектуру: центральная таблица фактов хранит события продаж, а измерения дают контекст. Такой подход разделяет операционный учёт и аналитику. OLTP-система остаётся источником детализированных транзакций, но не предназначена для произвольных срезов. ETL-процесс становится связующим звеном: он извлекает данные, приводит их к нужному виду и загружает в целевые таблицы.

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

Измерения проектируются с иерархиями. Персонал позволяет перейти от конкретного продавца к отделу и группе отдела. Продукт — от наименования к подкатегории и категории. Доставка — от города к региону и стране. Такие иерархии дают многомерный анализ: можно сравнивать эффективность продавцов, востребованность категорий по городам, сезонность. Показатели фактов — выручка и количество — должны быть однозначно интерпретируемыми. Выручка отвечает на финансовый вопрос, количество — на натуральный. Вместе они позволяют оценивать не только объём, но и структуру продаж.

Источник в учебном примере — AdventureWorks. Он моделирует международную торговлю велосипедами и аксессуарами через розницу и онлайн. Хотя база учебная, её структура демонстрирует типовые связи транзакционной системы. Практический вывод: качество аналитики зависит от предварительного проектирования. Сначала требования и метрики, затем измерения и иерархии, затем ETL и загрузка. Если пропустить этот порядок, хранилище будет содержать данные, но не сможет надёжно отвечать на вопросы бизнеса.

Практическое занятие посвящено проектированию хранилища данных (Data Warehouse, DW) по схеме «звезда» (star schema). Источник — OLTP-система (On-Line Transaction Processing), то есть транзакционная база. Перенос выполняет ETL (Extract, Transform, Load): извлечь, преобразовать, загрузить. Перед этим нужно понять, какие данные нужны, какие преобразования сделать и в какие таблицы загрузить.

Хранилище: в центре таблица фактов, к ней присоединены измерения (dimensions). Измерения: персонал, продукт, доставка, время.

Персонал: группа отдела, отдел, ФИО, дата рождения, пол. Анализ по продавцам, отделам, группам.

Продукт: категория, подкатегория, наименование, цена по прайс-листу на момент появления заказа, номер продукта. Цена должна быть актуальна на момент продажи; текущая цена может отличаться из-за индексации. Анализ по категориям и подкатегориям.

Доставка: страна, код страны, регион, код региона, город, код города. ФИО покупателя не нужно. Анализ по городу, региону, стране.

Время: всегда присутствует, с точностью до дня. Порядок продаж внутри дня не важен.

Показатели фактов: объём продаж (выручка в деньгах) и количество (в штуках). Они считаются в разрезе времени, города доставки, продукта, продавца.

Возможный анализ: эффективность продавцов по товарам, востребованность категорий по городам, сезонность. Это помогает увеличить продажи и прибыль.

Источник: учебная база Microsoft AdventureWorks. Версии: 2012, 2014, 2016, 2017; используется SQL Server 2017, поэтому AdventureWorks 2017. Магазин продаёт спортивные велосипеды и аксессуары. Есть розничные точки и интернет-магазин, доставка по миру. База учебная, но структура близка к реальной. Далее нужно рассмотреть таблицы и связи.

Выводы

1. ETL нужен для переноса данных из OLTP-системы в хранилище.
2. Хранилище по схеме «звезда» имеет таблицу фактов и измерения.
3. Аналитические требования определяют состав измерений.
4. В проекте четыре измерения: персонал, продукт, доставка, время.
5. Измерение «Персонал» поддерживает анализ по продавцам, отделам и группам.
6. Измерение «Продукт» поддерживает анализ по категориям и подкатегориям.
7. Цена продукта должна соответствовать моменту продажи.
8. Измерение «Доставка» описывает географию без ФИО покупателя.
9. Время достаточно учитывать с точностью до дня.
10. Показатели фактов: выручка и количество.
11. AdventureWorks — учебный источник, моделирующий продажи велосипедов и аксессуаров.
12. Даже простая модель «звезда» позволяет анализировать эффективность, спрос и сезонность.

Вопросы для самопроверки

1. Зачем перед созданием ETL формулировать аналитические требования?
2. Какие этапы включает ETL?
3. Что находится в центре схемы «звезда»?
4. Какие измерения включает проектируемое хранилище?
5. Какие атрибуты относятся к измерению «Персонал»?
6. Какие уровни агрегации даёт измерение «Персонал»?
7. Какие атрибуты включает измерение «Продукт»?
8. Почему цена продукта должна фиксироваться на момент продажи?
9. Какие атрибуты включает измерение «Доставка» и чего в нём нет?
10. С какой точностью учитывается время и почему?
11. Какие показатели считаются в таблице фактов?
12. Какие виды анализа позволяют выполнить эти измерения и показатели?
Вернуться к учебному плану