Практический пример: построение моделей данных для электронной коммерции с помощью dbt
Susan Sun
Freelance Data Scientist
Установка dbt
pip install dbt
Инициализация проекта dbt looker_ecommerce
dbt init looker_ecommerce
Проверка успешной установки
cd looker_ecommerce
dbt debug
Структура файлов, автоматически созданная dbt:

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

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

Исходный файл данных центров дистрибуции:
Исходный файл данных заказов:
dbt seeddbt sourcedbt init автоматически создаёт базовую структуру файлов:
looker_ecommerce/
macros/
models/
seeds/
snapshots/
tests/
dbt_project.yml
Загрузка 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')}}
Загрузка 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')}}
Документирование 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
_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
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
Загружает 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
Структура именования моделей:
<data_source>__<model_name>.sqlНапример:
stg_looker__distribution_centers.sqlstg_looker__orders.sqlСтруктура именования yaml-файлов:
_<data_source>__<artifact_type>.ymlНапример:
_looker__models.yml_looker__sources.ymlПрактический пример: построение моделей данных для электронной коммерции с помощью dbt