dbtdata engineeringSQLmodern data stackаналитик данных

dbt для аналитика 2026: первые шаги — models, tests, lineage

2026-05-30 12 мин

dbt (data build tool) — стандарт modern data stack для трансформаций в DWH. Если в 2024 ты писал SQL руками и складывал результаты через cron, в 2026 ты пишешь dbt-модели и получаешь lineage, тесты и документацию бесплатно. Airflow ставит расписание, dbt управляет трансформациями.

Этот гайд — за час дойдёшь от нуля до первой production-модели с тестами и snapshot'ами SCD2. Реальные примеры из аналитики маркетплейса и SaaS.


Что узнаешь


Шаг 1: Что такое dbt и зачем он аналитику

dbt — фреймворк трансформаций "T в ELT". Сырые данные уже в Snowflake/BigQuery/ClickHouse (E+L загрузил Fivetran/Airbyte). dbt отвечает за T — превращение raw → marts.

Источники → Fivetran (EL) → DWH raw schema
 ↓
 dbt (T) — твоя зона ответственности
 ↓
 Marts → BI / ML / эксперименты

Vs Airflow: Airflow оркестрирует расписание (запусти dbt job в 6:00). dbt управляет SQL-логикой (что и в каком порядке). Они не конкуренты, а дополняют друг друга.

Vs голый SQL: dbt даёт версионирование (Git), тесты, документацию, lineage. SQL в Confluence-страничках = головная боль через 6 месяцев. dbt-проект через 6 месяцев — всё ещё понятный код с тестами.

См. подборку 10 dbt-вопросов с реальных собесов — там паттерны incremental, snapshots, macros.

Шаг 2: Setup за 30 минут

Вариант A — dbt Cloud (управляемая SaaS):

Вариант B — dbt Core (self-hosted):

python -m venv.venv && source.venv/bin/activate
pip install dbt-core dbt-postgres # или dbt-snowflake, dbt-bigquery
dbt init my_analytics
cd my_analytics

Настрой ~/.dbt/profiles.yml:

my_analytics:
 target: dev
 outputs:
 dev:
 type: postgres
 host: localhost
 user: analytics
 password: secret
 port: 5432
 dbname: analytics
 schema: dbt_alice
 threads: 4

Проверь подключение:

dbt debug # должно быть All checks passed!
dbt run # запустит example-модели

Шаг 3: Структура проекта Kimball-стиль

Стандартный layout, который масштабируется до 500+ моделей:

models/
├── staging/ # 1:1 копии из raw с базовой очисткой
│ ├── stripe/
│ │ ├── stg_stripe__charges.sql
│ │ └── stg_stripe__customers.sql
│ └── app/
│ ├── stg_app__events.sql
│ └── stg_app__users.sql
├── intermediate/ # промежуточные joins, нет business-логики
│ └── int_orders_with_customer.sql
├── marts/ # финальные бизнес-таблицы
│ ├── finance/
│ │ └── fct_daily_revenue.sql
│ └── product/
│ ├── dim_users.sql
│ └── fct_engagement.sql
└── sources.yml # описание raw таблиц

Naming convention: