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: