Выбор ответа Junior dbt спрашивают часто обновлено

Зачем ref() в dbt

Вопрос

Почему в моделях dbt пишут {{ ref('stg_orders') }}, а не analytics.stg_orders?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: По ref dbt строит граф зависимостей, задаёт порядок запуска и подставляет схему окружения. Ссылка через ref даёт dbt знание о зависимостях: lineage, порядок запуска, выбор поднаборов моделей (+модель), а также подстановку схемы dev или prod.

Варианты ответа

  1. ref ускоряет выполнение запроса: dbt подставляет закешированный результат модели
  2. Без ref dbt не сможет подключиться к базе, где лежит модель, и упадёт при компиляции
  3. ref автоматически создаёт индексы по ключам, которыми модели соединяются друг с другом
  4. По ref dbt строит граф зависимостей, задаёт порядок запуска и подставляет схему окруженияправильный ответ

Разбор

Ссылка через ref даёт dbt знание о зависимостях: lineage, порядок запуска, выбор поднаборов моделей (+модель), а также подстановку схемы dev или prod. Хардкод имени ломает и граф, и окружения. На скорость запроса и подключение ref не влияет. Индексы dbt не создаёт.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.