Настройка проекта dbt и загрузка данных

Практический пример: построение моделей данных для электронной коммерции с помощью 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.

Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Знакомство с данными: центры дистрибуции

  • distribution_centers.csv — небольшой статичный файл, содержащий всего 10 строк

  • Пример содержимого файла distribution_centers.csv

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

  • id: уникальный идентификатор центра дистрибуции
  • name: название центра дистрибуции
  • latitude: широта центра дистрибуции
  • longitude: долгота центра дистрибуции
Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Знакомство с данными: заказы

orders.csv — большой и постоянно обновляемый файл: 125 000 строк и 9 столбцов

  • order_id: уникальный идентификатор заказа
  • user_id: идентификатор пользователя, оформившего заказ
  • status: статус заказа
  • gender: пол пользователя
  • created_at: временна́я метка создания заказа
  • returned_at: временна́я метка возврата заказа
  • shipped_at: временна́я метка отправки заказа
  • delivered_at: временна́я метка доставки заказа
  • num_of_items: количество товаров в заказе
Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Знакомство с данными: заказы

Пример содержимого файла orders.csv:

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

Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Настройка исходных данных: source и seed

Исходный файл данных центров дистрибуции:

  • Характеристики данных:
    • Небольшой плоский файл (csv)
    • Медленно изменяемые данные

Исходный файл данных заказов:

  • Характеристики данных:
    • Большой набор данных
    • Быстро изменяемые данные
  • Метод загрузки dbt:
    • dbt seed
    • Загрузка как разовый файл
  • Метод загрузки dbt:
    • dbt source
    • Коннектор к DuckDB
Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Настройка исходных данных: source и seed

dbt init автоматически создаёт базовую структуру файлов:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Настройка исходных данных: source и 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')}}
Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Настройка исходных данных: source и 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')}}
Практический пример: построение моделей данных для электронной коммерции с помощью 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
Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Документирование источников и промежуточных моделей

  • Пример файла _looker__models.yml в той же директории models:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Distribution center name and location    

  - name: stg_looker__orders
    description: Order information such as order status
Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Sources, seeds, модели и 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
Практический пример: построение моделей данных для электронной коммерции с помощью 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
Практический пример: построение моделей данных для электронной коммерции с помощью 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
Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Давайте потренируемся!

Практический пример: построение моделей данных для электронной коммерции с помощью dbt

Preparing Video For Download...