Что такое dbt
dbt — это инструмент для трансформации данных внутри базы. То есть вы грузите сырые данные (EL), а dbt делает T — превращает их в удобные таблицы и витрины.
Проще:
- EL — загрузили сырые данные в staging
- T — dbt превращает их в витрины и метрики
Кому и зачем
dbt нужен, когда:
- есть много SQL-трансформаций
- нужна прозрачная логика и история изменений
- важно качество данных и документация
Что даёт dbt:
- разбиение логики на модели (DRY)
- тесты качества данных
- автодокументация и lineage
- стандартизацию работы команды
Что нужно знать перед стартом
- базовый SQL
- git
- установленный Python
Как выглядит dbt в жизни
dbt — это папка с SQL-моделями и конфигами.
Каждая модель — обычный SQL, но с ссылками на другие модели через ref().
Пример очень простой модели:
select
customer_id,
count(*) as orders_cnt
from {{ ref('stg_orders') }}
group by 1Вот так dbt связывает модели в граф, строит зависимости и запускает всё по порядку.
Основные команды dbt
dbt run # выполняет модели
dbt test # запускает тесты
dbt seed # загружает csv
dbt build # seed + run + test
dbt docs # генерация документацииПолезные флаги:
-s выбрать модели
-f пересоздать инкрементальные
-d debug-логи
-t выбрать target (dev/prod)Базовые термины
Проект
Папка с dbt_project.yml. В нём настройки путей, моделей и профиля подключения.
Profile
Подключение к базе (profiles.yml).
Обычно есть dev, test, prod.
Модель
SQL-файл, из которого dbt создаёт таблицу или view.
Материализация
Способ, как модель хранится:
view— представлениеtable— таблицаincremental— догружается только новое
Пример:
{{ config(materialized='table') }}
select * from ...Seed
CSV-файлы, которые dbt загружает в базу. Часто справочники.
Sources
Внешние таблицы, созданные не dbt.
Пример:
select *
from {{ source('raw', 'orders') }}Ref
Ссылка на другую модель:
select * from {{ ref('stg_customers') }}Тесты в dbt
Базовые тесты:
uniquenot_nullrelationshipsaccepted_values
Описываются в .yml рядом с моделями.
Документация и Lineage
dbt строит граф зависимостей (lineage).
Его можно смотреть в dbt docs serve.
Когда dbt особенно полезен
- много SQL-трансформаций
- нужно контролировать качество
- важна прозрачность пайплайна
- команда работает параллельно
Итог
dbt — это стандарт для трансформаций в аналитических БД. Он упорядочивает SQL, даёт тесты, документацию и понятный пайплайн.
Почему dbt, а не просто SQL
SQL сам по себе не даёт:
- управления зависимостями между запросами,
- тестов качества,
- документации,
- запуска всего пайплайна одной командой.
dbt решает это «надстройкой» над SQL:
- вы пишете всё тем же SQL,
- dbt сам строит порядок выполнения,
- легко масштабировать проект и команду.
По сути, dbt превращает набор SQL-скриптов в поддерживаемый продукт.