Marts-слой хранилища

Структура папок слоя витрин данных повторяет структуру промежуточного слоя. Здесь создаются и хранятся как модели, ориентированные на конкретные бизнес-подразделения, так и модели, которые могут быть использованы несколькими подразделениями.

Структура слоя

Создайте вложенные папки в marts:

  • core – для хранения «общих» моделей,

  • finance – для хранения моделей финансового отдела.

Модели слоя

Общие модели

К этому моменту все необходимые преобразования выполнены, поэтому остается лишь переложить итоговые модели промежуточного слоя в модели витрин.

Слой витрин данных для учебного проекта будет содержать четыре модели:

  • заказчики (customers),

  • автомобили (cars),

  • календарь (calendar)

  • оплата (payments).

Начните с заказчиков.

Создайте в папке models/marts/core/ файл dim_customers.sql и добавьте в него следующий код:

with customers as ( select customer_id, full_name, gender, driving_licence_number, driving_licence_valid_from, phone, email, updated_at from {{ ref('int_customers_name_concatenated') }} ) select * from customers order by customer_id
Рисунок 38. Витрина Заказчики

В той же папке создайте файл dim_cars.sql и добавьте в него следующий код:

with cars as ( select car_id, brand, model, category_text, rate, car_year, vin, licence_plate, mileage from {{ ref('int_cars_joined_to_categories') }} ) select * from cars order by car_id
Рисунок 39. Витрина Автомобили

Создайте последнее измерение dim_calendar.sql и добавьте в него следующий код:

with calendar as ( select date_id, full_date, year, month, day from {{ ref('int_dates_package_generated') }} ) select * from calendar
Рисунок 40. Витрина Календарь

Модели финансового отдела

Осталось добавить последнюю модель с основной мерой (показателем) для финансового отдела.

Создайте в папке models/marts/finance/ файл fct_payments.sql и добавьте в него следующий код:

with payments as ( select payment_id, created_at, customer_id, car_id, amount from {{ ref('int_payments_joined_to_bookings') }} ) select * from payments
Рисунок 41. Витрина Оплата

Запуск проекта и обновление хранилища

Поздравляю! Вы построили хранилище данных в парадигме Кимбалла с помощью dbt!

Теперь данные можно анализировать, например, с помощью различных BI-инструментов (или при желании через SQL-запросы). Но это отдельная тема, а сейчас время запустить движок dbt для сохранения новых объектов в хранилище.

Выполните команду запуска проекта:

dbt run

Перейдите в pgAdmin и проверьте результат:

1

2

Рисунок 42. Создание схемы и объектов витрин

Также для обновления линейного графа (и всей документации конечно же) выполните последовательно две команды:

dbt docs generate dbt docs serve

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

Рисунок 43. Обновленный граф зависимости моделей проекта

Остановите локальный сервер (Ctrl+C) и сохраните код текущего состояния проекта в git-репозитории.

Сохранение проекта в GitHub

Загрузите текущее состояние dbt-проекта в git-репозиторий.

Добавьте все файлы проекта:

git add .

Добавьте сообщение для коммита:

git commit -m "marts-models"

Отправьте локальный проект в репозиторий GitHub:

git push

Теперь актуальный код проекта хранится в GitHub-репозитории.