Основы DBT (Data Build Tool)
Моделируйте данные хранилища в виде операторов SELECT в dbt, используя ссылки, источники и инкрементальные модели
«Основы DBT (Data Build Tool)» — бесплатный урок SQL Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.
Что такое dbt
dbt — это «T» в ELT: он преобразует данные внутри хранилища с помощью операторов SELECT. Вы определяете модели (операторы SELECT), а dbt материализует их как таблицы или представления, управляет зависимостями и запускает тесты.
Зачем нужен dbt
До появления dbt преобразования выполнялись в разовых сценариях SQL, хранимых процедурах или заданиях на Python. dbt предоставляет:
- Модульный SQL как код, версионируемый в Git
- Граф зависимостей (ref()) вместо ручного упорядочивания
- Тесты как объекты первого класса
- Автоматическую генерацию документации
Структура проекта
Проект dbt:
my_project/
dbt_project.yml
models/
staging/
stg_orders.sql
marts/
fct_revenue.sql
tests/
seeds/
macros/Файл модели
Всего лишь SELECT в файле .sql:
-- models/staging/stg_orders.sql
{{ config(materialized='view') }}
SELECT
id,
user_id,
total,
created_at
FROM {{ source('raw', 'orders') }}Типы материализации
- представление — dbt создаёт VIEW; быстро обновляется, но медленнее обрабатывает запросы
- таблица — полноценная таблица; пересоздаётся при каждом запуске
- инкрементальная — добавляются только новые строки
- эфемерная — встроенный CTE, объект базы данных не создаётся
ref() и зависимости
Сошлитесь на одну модель из другой:
-- models/marts/fct_revenue.sql
SELECT
date_trunc('day', created_at) AS day,
SUM(total) AS revenue
FROM {{ ref('stg_orders') }}
GROUP BY 1Запуск dbt
Соберите весь проект:
dbt run # build all models
dbt run --select staging # subset
dbt run --select +fct_revenue # this model and upstream
dbt build # run + testИсточники
Источники документируют исходные таблицы и позволяют ссылаться на них:
# models/sources.yml
sources:
- name: raw
database: warehouse
tables:
- name: ordersИнкрементальные модели
Для огромных таблиц фактов:
{{ config(materialized='incremental', unique_key='id') }}
SELECT *
FROM {{ source('raw','orders') }}
{% if is_incremental() %}
WHERE created_at > (SELECT MAX(created_at) FROM {{ this }})
{% endif %}Шаблонизация Jinja
dbt — это SQL и Jinja, поэтому можно создавать SQL в циклах и условно:
{% set tiers = ['free','pro','enterprise'] %}
SELECT user_id,
{% for t in tiers %}
COUNT(*) FILTER (WHERE tier = '{{ t }}') AS {{ t }}_count {% if not loop.last %},{% endif %}
{% endfor %}
FROM users GROUP BY user_idСнимки
Медленно изменяющиеся измерения фиксируются автоматически:
{% snapshot user_snapshot %}
{{ config(
target_schema='snapshots',
unique_key='id',
strategy='timestamp',
updated_at='updated_at',
) }}
SELECT * FROM {{ source('raw','users') }}
{% endsnapshot %}Документация
Автоматически создавайте доступную для просмотра документацию на основе моделей и описаний YAML:
dbt docs generate
dbt docs serve # opens browserИтоги
dbt оформляет преобразования данных как код SQL.
- Модель = SELECT в файле .sql
- ref() строит DAG
- Материализации: представление / таблица / инкрементальная / эфемерная
- Тесты и документация как объекты первого класса
Быстрая проверка
Что делает {{ ref('stg_orders') }} в dbt?
Часто задаваемые вопросы
Урок «Основы DBT (Data Build Tool)» бесплатный?
Да — полный текст урока «Основы DBT (Data Build Tool)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы DBT (Data Build Tool)»?
Моделируйте данные хранилища в виде операторов SELECT в dbt, используя ссылки, источники и инкрементальные модели Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SQL Academy?
Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы DBT (Data Build Tool)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SQL Academy?
Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы DBT (Data Build Tool)
- SQLFluff и статический анализ
- Тестирование SQL: тесты dbt и Great Expectations
- CI для изменений схемы (GitHub Actions)