Развертывание системы на примере PDI и первичное заполнение таблиц измерений.
В этом уроке показаны возможности развертывания WH средствами PDI (Pentaho Data Integration). Сама схема WH была спроектирована в предыдущем уроке. (Загрузка/Download)
Рекомендую просматривать видео на Youtube (ссылка http://youtu.be/JBARKsf9xoc)
План видео /Video plan (ссылка на youtub http://youtu.be/JBARKsf9xoc)
- Создание БД «pentaho».
- Создание основного элемента “Job”.
- Создание общего подключения к БД.
- Задание ER схемы в “Execute SQL script”.
- Добавление «no_value» значений в таблицы измерений (генерация SQL скриптов).
- Создание зависимой трансформации.
- Подготовка трансформации к считыванию таблицы измерения времени из Excel файла.
- Подготовка Excel файла таблицы измерения времени.
- Ошибки при чтении таблицы измерения времени (особенности хранения времени в Excel).
- Экспорт таблицы измерения времени в текстовый формат.
- Возможные ошибки при чтении из текстового формата (ошибка маски времени).
- Связывание трансформации с главной работой.
- Отладка процесса и мелкая доработка.
- Финальный запуск и тестирование.
При первичном заполнении таблиц измерений я столкнулся со странной особенностью: при создании первой записи с id_…. = 0 создавалась запись с id_… = 1. Очень неприятная неожиданность. Один из путей решения данной проблемы разберем в следующем видео.
Почему я развернул схему не напрямую через запрос, а через PDI?
Для этого были следующие причины:
- В PDI вы сможете только изменив схему WH подключиться к другой СУБД и развернуть WH (например, можно в PostgreSQL). Думаю, не составит у вас труда это сделать самостоятельно.
- Для демонстрации заданий, трансформаций и скриптов.
- Для первичного заполнения таблиц измерений.
- Схема и процесс будут лежать в одном месте. И тогда вы точно не забудете сделать шаг 3.
Развиваем мысль дальше. Для чего нужно первичное заполнение? Идея состоит в том, что при объединении таблиц измерений с таблицей фактов использовали inner join или where. Уберем из рассмотрения left и right, потому что при их использовании не всегда можно быстро построить правильный запрос. Left и right оставим для специальных исследований. Для того, чтобы работать с inner join или where надо ввести строку, которая является значением по умолчанию. Это всего лишь первый шаг. Второй шаг сделаем при добавлении данных в таблицу фактов. Будем заменять пустые значения в таблице фактов на значение по умолчанию. Эти два шага и обеспечивают необходимые условия для объединения.
Если не сделать эти два шага, то при построении запросов мы можем столкнуться с выпадением данных из запросов. Например, если в таблице фактов есть пустое значение внешнего ключа, то при объединении с таблицей измерений эта строка выпадет из результата. Аналогичные рекомендации даются в руководствах по проектированию WH.
Почему я стал генерировать измерение времени в Excel?
- Для того, чтобы быть полностью уверенным в правильности генерации таблицы измерений. У каждой БД есть своя особенность работы со временем: какой день в неделе первый и как считать недели в году (и много других особенностей). Приведу один запрос на PostgreSQL:
WITH date_series AS ( SELECT DATE(GENERATE_SERIES(DATE '2012-01-01', DATE '2012-01-10','1 day')) AS date ) SELECT date , EXTRACT(DAY FROM date) AS day , EXTRACT(MONTH FROM date) AS month , EXTRACT(QUARTER FROM date) AS quarter , EXTRACT(YEAR FROM date) AS year , EXTRACT(WEEK FROM date) AS week FROM date_series;
1 января 2012 года - это 52 неделя. Для меня это неприемлемо.
-
Для демонстрации работы PDI процесса обновления таблицы измерений.
-
Для того, чтобы показать вам возможные ошибки при генерации измерений времени, в том числе особенности хранения формата даты в Excel. Показать ошибки очень важно. В каждом видео я стараюсь их допускать и показываю пути их исправления.
Ну вот и все.
Ссылки по теме:
- Часть 3. Установка Pentaho и PDI (видео)
- Часть 5. Разработка WH (видео)
- Часть 5. Организация хранилища данных (WareHouse)
- Порядок разработки ETL-процессов http://www.olap.ru/basic/etl.asp
- Создание измерения времени на PostgreSQL https://anonymousbi.wordpress.com/tag/postgresql/
- Подробности
- Опубликовано: 12 Февраль 2014
- Просмотров: 3851