Ответ вслух Senior dbt обновлено

Как организовать dbt-проект в команде

Вопрос

Вас позвали навести порядок в dbt-проекте на 800 моделей, который пишут 15 аналитиков. Что сделаете?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Образцовый ответ: «Начну с инвентаризации по графу: какие модели используются дашбордами, какие висят без потребителей, где самые долгие и дорогие запуски.

Что должно прозвучать в ответе

  • Слои staging, intermediate, marts и соглашения об именовании

  • Источники через source с проверкой свежести

  • Тесты: ключи, связи, бизнес-правила, unit tests для сложной логики

  • CI: slim CI с state:modified+, линтер SQL

  • Владельцы моделей, документация, контракты для публичных моделей

  • Производительность: материализации, инкрементальность, стоимость запусков

Что могут спросить следом

  • Как убедить аналитиков писать тесты?
  • Как найти модели, которые никто не использует?

Разбор

Образцовый ответ: «Начну с инвентаризации по графу: какие модели используются дашбордами, какие висят без потребителей, где самые долгие и дорогие запуски. Ввожу структуру слоёв: staging один к одному с источниками, intermediate для логики, marts для потребителей, и соглашения об именах, чтобы по имени было понятно слой и назначение. Все сырые таблицы через source с проверкой свежести. Минимальный стандарт тестов: ключ unique и not_null, связи для внешних ключей, accepted_values для статусов, а для сложной логики unit tests. В CI slim-сборка изменённых моделей и их потомков, линтер SQL, проверка, что у новой модели есть описание и владелец. Для моделей, которые читают другие команды, контракты с зафиксированной схемой. Тяжёлые модели перевожу на инкрементальные. Неиспользуемые модели удаляю».

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

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