Иерархические модели в dbt

Введение в dbt

Mike Metzger

Data Engineer

Что такое иерархия в dbt?

  • Отражает зависимости внутри проекта dbt
  • Также называется направленным ациклическим графом (DAG) или графом родословной
    • Важно: это понятие специфично для dbt, а не общий DAG
  • Позволяет строить / обновлять модели в соответствии с зависимостями

DAG dbt / граф родословной

Введение в dbt

Подробности об иерархии

  • avg_fare_per_day и total_creditcard_riders_per_day зависят от taxi_rides_raw
  • dbt сначала строит taxi_rides_raw
  • Без графа родословной dbt создаёт записи в алфавитном порядке
    • avg_fare_per_day завершится ошибкой без taxi_rides_raw

DAG dbt / граф родословной

Введение в dbt

Как определяются иерархии?

  • Строится с помощью шаблонизатора Jinja в файле(ах) модели
  • Чаще всего используется функция ref
  • Замените имя таблицы на {{ ref('model_name') }} в SQL
  • Материализуйте таблицу (повторно) с помощью dbt run
  • Шаблоны ref заменяются реальными именами таблиц
Введение в dbt

Пример иерархии

SELECT 
  first_name, last_name
FROM taxi_rides_raw
SELECT 
  first_name, last_name
FROM {{ ref('taxi_rides_raw') }}
Введение в dbt

Давайте потренируемся!

Введение в dbt

Preparing Video For Download...