Развертывание системы на примере PDI и первичное заполнение таблиц измерений.

В этом уроке показаны возможности развертывания WH средствами PDI (Pentaho Data Integration). Сама схема WH была спроектирована в предыдущем уроке. (Загрузка/Download)

Рекомендую просматривать видео на Youtube (ссылка http://youtu.be/JBARKsf9xoc)

План видео /Video plan (ссылка на youtub http://youtu.be/JBARKsf9xoc)

  1. Создание БД «pentaho».
  2. Создание основного элемента “Job”.
  3. Создание общего подключения к БД.
  4. Задание ER схемы в “Execute SQL script”.
  5. Добавление «no_value» значений в таблицы измерений (генерация SQL скриптов).
  6. Создание зависимой трансформации.
  7. Подготовка трансформации к считыванию таблицы измерения времени из Excel файла.
  8. Подготовка Excel файла таблицы измерения времени.
  9. Ошибки при чтении таблицы измерения времени (особенности хранения времени в Excel).
  10. Экспорт таблицы измерения времени в текстовый формат.
  11. Возможные ошибки при чтении из текстового формата (ошибка маски времени).
  12. Связывание трансформации с главной работой.
  13. Отладка процесса и мелкая доработка.
  14. Финальный запуск и тестирование.

При первичном заполнении таблиц измерений я столкнулся со странной особенностью: при создании первой записи с id_…. = 0 создавалась запись с id_… = 1. Очень неприятная неожиданность. Один из путей решения данной проблемы разберем в следующем видео.

Почему я развернул схему не напрямую через запрос, а через PDI?

Для этого были следующие причины:

  1. В PDI вы сможете только изменив схему WH подключиться к другой СУБД и развернуть WH (например, можно в PostgreSQL). Думаю, не составит у вас труда это сделать самостоятельно.
  2. Для демонстрации заданий, трансформаций и скриптов.
  3. Для первичного заполнения таблиц измерений.
  4. Схема и процесс будут лежать в одном месте. И тогда вы точно не забудете сделать шаг 3.

Развиваем мысль дальше. Для чего нужно первичное заполнение? Идея состоит в том, что при объединении таблиц измерений с таблицей фактов использовали inner join или where. Уберем из рассмотрения left и right, потому что при их использовании не всегда можно быстро построить правильный запрос. Left и right оставим для специальных исследований. Для того, чтобы работать с inner join или where надо ввести строку, которая является значением по умолчанию. Это всего лишь первый шаг. Второй шаг сделаем при добавлении данных в таблицу фактов. Будем заменять пустые значения в таблице фактов на значение по умолчанию. Эти два шага и обеспечивают необходимые условия для объединения.
Если не сделать эти два шага, то при построении запросов мы можем столкнуться с выпадением данных из запросов. Например, если в таблице фактов есть пустое значение внешнего ключа, то при объединении с таблицей измерений эта строка выпадет из результата. Аналогичные рекомендации даются в руководствах по проектированию WH.

Почему я стал генерировать измерение времени в Excel?

    1. Для того, чтобы быть полностью уверенным в правильности генерации таблицы измерений. У каждой БД есть своя особенность работы со временем: какой день в неделе первый и как считать недели в году (и много других особенностей).
    2. Приведу один запрос на 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 неделя. Для меня это неприемлемо.

date time

  1. Для демонстрации работы PDI процесса обновления таблицы измерений.

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

Ну вот и все.

Ссылки по теме:

  1. Часть 3. Установка Pentaho и PDI (видео)
  2. Часть 5. Разработка WH (видео)
  3. Часть 5. Организация хранилища данных (WareHouse)
  4. Порядок разработки ETL-процессов http://www.olap.ru/basic/etl.asp
  5. Создание измерения времени на PostgreSQL https://anonymousbi.wordpress.com/tag/postgresql/