Learning Platform
Глоссарий Troubleshooting
Урок 14.01 · 20 мин
Начальный
dbtELTSQLTransformation

Что такое dbt

Когда данные уже лежат в Snowflake, BigQuery или Redshift, начинается самое интересное — трансформация. Сырые таблицы из CRM, биллинга и кликстрима нужно превратить в чистые витрины: daily_revenue, active_users, cohort_retention. Это и есть буква T в ELT.

Раньше этим занимались десятки SQL-скриптов, разбросанных по серверам, без версионирования, тестов и документации. Скрипты ломались, никто не знал, какой запрос актуальный, а аналитик ждал две недели правки одной колонки. В 2016 году компания Fishtown Analytics выпустила инструмент, который перевернул индустрию — dbt (data build tool).

К 2026 году dbt — дефакто-стандарт трансформаций в современных data-командах. Если ты собеседуешься на junior DE и не знаешь dbt — это пробел, который нужно закрыть в первую очередь.


Какую проблему решает dbt

Представь типичную ситуацию до dbt:

SQL-трансформации до dbt: хаос
Сырые таблицы в DWH
create_orders.sql на ноутбуке Васи
revenue_daily.sql в Google Drive
refresh_users.sh на cron
Витрины с сомнительными данными

Проблемы такого подхода:

  • Нет версионирования. SQL живёт в редакторах и Google Drive, git не используется.
  • Нет тестов. Никто не проверяет, что order_id уникален или что revenue >= 0.
  • Нет документации. Откуда взялась колонка mrr_normalized? Никто не знает.
  • Нет lineage. Если изменить stg_orders, что сломается дальше? Узнаешь, когда позвонит CFO.
  • Дубли логики. Каждый аналитик пишет свой is_paying_customer, и определения расходятся.

dbt решает всё это, превращая SQL-трансформации в программный проект: модели в git, тесты как код, документация генерируется автоматически, lineage строится по графу зависимостей.


Что такое dbt по сути

dbt — это CLI-инструмент на Python, который компилирует и запускает твои SQL-модели в DWH. Сам dbt не хранит и не обрабатывает данные — он просто умно делегирует SQL в Snowflake, BigQuery, Redshift, Postgres, Databricks или другой движок.

NOTE

dbt — это T в ELT. Загрузку данных (E и L) делают другие инструменты: Fivetran, Airbyte, Meltano, Stitch. dbt берёт уже загруженные сырые таблицы и превращает их в витрины.

Структура dbt-проекта:

my_dbt_project/
  dbt_project.yml          # конфиг проекта
  profiles.yml             # подключение к DWH (вне репо)
  models/                  # SQL-модели (главное)
    staging/
      stg_orders.sql
      stg_customers.sql
    marts/
      mart_revenue_daily.sql
  tests/                   # data tests
  macros/                  # переиспользуемая логика на Jinja
  snapshots/               # SCD2 snapshots
  seeds/                   # CSV-файлы для маленьких справочников

Каждая модель — это просто .sql файл с одним SELECT. Никаких CREATE TABLE, INSERT, MERGE — dbt сам решает, как материализовать модель: как VIEW, как TABLE, инкрементально или эфемерно.

Пример простой модели models/marts/mart_revenue_daily.sql:

{{ config(materialized='table') }}

SELECT
  date_trunc('day', order_at) AS day,
  count(*) AS orders_cnt,
  sum(amount) AS revenue
FROM {{ ref('stg_orders') }}
WHERE status = 'paid'
GROUP BY 1

Когда ты запускаешь dbt run, dbt компилирует этот шаблон в чистый SQL, оборачивает в CREATE OR REPLACE TABLE и выполняет в твоём DWH.


dbt-core vs dbt Cloud

У dbt две версии. Их часто путают на собеседованиях.

dbt-core vs dbt Cloud
dbt-core
dbt Cloud

dbt-core — что компании используют чаще всего. Запускается из контейнера в Airflow или GitHub Actions, бесплатный, гибкий. Все материалы курса работают и в dbt-core.

dbt Cloud — удобный для команд, которые не хотят сами поднимать инфраструктуру. Платный сервис, но даёт веб-IDE, планировщик, мониторинг и интеграцию с git из коробки.

TIP

Учи dbt-core. Если устроишься в компанию с dbt Cloud — научишься Cloud за час. Обратное не работает: те, кто учил только Cloud, теряются, когда нужно поднять dbt из Airflow-контейнера.


Что делает dbt стандартом в 2026

К 2026 году у dbt 60+ тысяч активных компаний по миру: от стартапов до Fortune 500. Несколько причин:

1. SQL как язык трансформаций. SQL знают все: аналитики, DE, DS. dbt не вводит новый язык — только улучшает SQL шаблонами Jinja.

2. Git-friendly workflow. Модели — это просто файлы. Pull request, code review, ветвление работают как с обычным кодом.

3. Инкрементальные модели. Не нужно каждый раз пересчитывать таблицу с 10 млрд строк — dbt умеет догружать только новые данные.

4. Lineage из коробки. Граф зависимостей строится автоматически из ref() — увидишь, какие модели затронет изменение stg_orders.

5. Документация генерируется автоматически. Запускаешь dbt docs generate, и получаешь сайт с описанием каждой колонки и графом lineage.

6. Огромная экосистема пакетов. dbt Hub хостит сотни open-source пакетов: dbt_utils, dbt_expectations, коннекторы к Salesforce, Stripe, Shopify.


Где dbt вписывается в стек

Место dbt в modern data stack
Источники
Extract + Load (Fivetran/Airbyte)
DWH/Lakehouse
Transform (dbt)
BI / Analytics
ML / Data Science

dbt сидит ровно посередине — между загрузкой сырых данных и потребителями. Это сердце трансформационного слоя. Если в компании есть DWH, скорее всего рядом есть dbt.


Кто работает с dbt в команде

  • Analytics Engineers — главные пользователи dbt. Это новая роль, она появилась как раз благодаря dbt: аналитик с SQL и git, который строит витрины для команды.
  • Data Engineers — отвечают за инфраструктуру dbt: контейнеры, Airflow, права на DWH.
  • Data Analysts — читают готовые витрины, могут пушить простые модели в dbt.

Если ты junior DE — ты будешь и поднимать инфру dbt, и писать модели первое время.


Что дальше

В следующем уроке разберём конкретику: модели, функцию ref(), материализации и слои staging/intermediate/marts. Это даёт базу, чтобы написать первый рабочий dbt-проект.

dbt-i: роль analytics engineer и место dbt в Modern Data Stack
NOTE

Этот модуль — короткий intro в dbt. Подробно про тесты, документацию, Jinja, macros, packages, snapshots, инкрементальные модели и продакшен-паттерны — в нашем курсе dbt-i на платформе.


Попробуй сам

Установи dbt-core локально через pip install dbt-postgres (или dbt-snowflake если есть аккаунт). Создай минимальный проект через dbt init my_project. Посмотри на структуру: где dbt_project.yml, где папка models/. Не нужно ничего запускать — просто прочувствуй, как выглядит dbt-проект изнутри. Если есть бесплатный аккаунт BigQuery — настрой подключение и запусти dbt run на одной модели.

Проверка знанийKnowledge check
Почему dbt стал дефакто-стандартом трансформаций к 2026 году, хотя сам не хранит и не обрабатывает данные?
ОтветAnswer
Главная причина: dbt превращает SQL-трансформации в программный проект, где работают git, code review, тесты и документация — то есть стандартные практики разработки. До dbt SQL-скрипты жили в Google Drive и ноутбуках аналитиков, без версионирования и тестов. dbt не изобретает новый язык — он улучшает обычный SQL шаблонами Jinja и автоматически строит lineage по графу ref(). Это даёт командам analytics engineers возможность работать с трансформациями как с кодом, а не с разрозненными скриптами. Поскольку SQL знают все (аналитики, DE, DS), порог входа низкий, а профит огромный: версионирование, lineage, тесты и документация из коробки.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 5. Какую букву ELT-процесса покрывает dbt?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 2