Налаштування проєкту dbt та завантаження даних

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Susan Sun

Freelance Data Scientist

Огляд: налаштування та ініціалізація dbt

Установіть dbt

pip install dbt

Ініціалізуйте проєкт dbt looker_ecommerce

dbt init looker_ecommerce

Перевірте успішність налаштування

cd looker_ecommerce
dbt debug

Автозгенерований dbt каталог файлів:

Повтор знімка екрана з попереднього уроку. Показано каталоги, які створює dbt init. Коренева папка looker e-commerce. Внутрішні папки: analyses, macros, models, seeds, snapshots, tests. Також три файли: gitignore, dbt project yaml і readme markdown.

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Знайомимося з даними: центри дистрибуції

  • distribution_centers.csv невеликий і статичний, лише 10 рядків

  • Зразок «сирого» файла даних distribution_centers.csv

Попередній перегляд файла центрів дистрибуції з трьома рядками даних і 4 стовпцями. Назви стовпців: id, name, latitude, longitude.

  • id: Унікальний ідентифікатор центру дистрибуції
  • name: Назва центру дистрибуції
  • latitude: Широта центру дистрибуції
  • longitude: Довгота центру дистрибуції
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Знайомимося з даними: замовлення

orders.csv великий і постійно оновлюється: 125 000 рядків і 9 стовпців

  • order_id: Унікальний ID кожної позиції замовлення
  • user_id: ID користувача, який зробив замовлення
  • status: Статус замовлення
  • gender: Стать користувача
  • created_at: Час створення замовлення
  • returned_at: Час повернення замовлення
  • shipped_at: Час відправлення замовлення
  • delivered_at: Час доставки замовлення
  • num_of_items: Кількість товарів у замовленні
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Знайомимося з даними: замовлення

Зразок «сирого» файла даних orders.csv:

Попередній перегляд файла замовлень із двома рядками даних і 9 стовпцями. Назви стовпців: order id, user id, status, gender, created at, returned at, shipped at, delivered at, num of items.

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Налаштування сирих джерел і seed-даних

«Сирий» файл даних Distribution center:

  • Характеристики даних:
    • Невеликий, плоский файл (csv)
    • Дані змінюються повільно

«Сирий» файл даних Orders:

  • Характеристики даних:
    • Великий набір даних
    • Дані швидко змінюються
  • Спосіб завантаження в dbt:
    • dbt seed
    • Одноразове завантаження файла
  • Спосіб завантаження в dbt:
    • dbt source
    • Конектор до DuckDB
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Налаштування сирих джерел і seed-даних

dbt init автогенерує базову структуру файлів:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Налаштування сирих джерел і seed-даних

Завантажте distribution_center як seed:

looker_ecommerce/
  macros/
  models/
    stg_looker__distribution_centers.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml

У stg_looker__distribution_centers.sql:

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Налаштування сирих джерел і seed-даних

Завантажте orders як source:

looker_ecommerce/
  macros/
  models/
    stg_looker__orders.sql
  seeds/
  snapshots/
  tests/
  dbt_project.yml

У stg_looker__orders.sql:

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Документування джерел і проміжних моделей

Щоб задокументувати sources:

looker_ecommerce/
  macros/
  models/
    _looker__sources.yml
  seeds/
  snapshots/
  tests/
  dbt_project.yml

У _looker__sources.yml:

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Документування джерел і проміжної моделі

  • Зразок файла _looker__models.yml у тій самій теці models:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Назва та розташування центру дистрибуції    

  - name: stg_looker__orders
    description: Інформація про замовлення, зокрема статус
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Джерела, seed-файли, моделі та yaml

looker_ecommerce/
  macros/
  models/
    _looker__models.yml
    _looker__sources.yml
    stg_looker__distribution_centers.sql
    stg_looker__orders.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Огляд: підкоманди dbt

Завантажує csv як seed-файли

dbt seed

Створює або оновлює всі моделі в проєкті dbt

dbt run

Створює або оновлює вказану модель

dbt run --select model

Запускає всі тести в проєкті dbt

dbt test 

Запускає тести для вказаної моделі

dbt test --select model

Поєднує dbt run і dbt test в одному!

dbt build
dbt build --select model
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Огляд: настанови з найкращих практик

Структура імен моделей:

  • подвійне підкреслення відділяє джерело даних від назви моделі
  • <data_source>__<model_name>.sql

наприклад:

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

Структура імен yaml-файлів:

  • починається з одного підкреслення
  • подвійне підкреслення відділяє джерело даних від типу артефакту
  • _<data_source>__<artifact_type>.yml

наприклад:

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Давайте потренуємось!

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Preparing Video For Download...