0Pricing
SQL Academy · Урок

Основы 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы DBT (Data Build Tool)
  2. SQLFluff и статический анализ
  3. Тестирование SQL: тесты dbt и Great Expectations
  4. CI для изменений схемы (GitHub Actions)
← Назад к SQL Academy