dbt

Средний уровень

Как узнать, что сломается ниже по потоку, прежде чем менять модель dbt?

Граф линейности уже существует в manifest.json каждого запуска dbt. Вопрос в том, проверяете ли вы его до того, как изменение уедет, или узнаёте о проблеме от сломанного дашборда после.

Читать на:
Без проверки lineage dbt ls pre-merge + exposures
Примерно сколько реального влияния ниже по потоку раскрывает каждый шаг — не измеренный бенчмарк.

Переименованный столбец или удалённая модель выглядят безопасно в диффе PR, если ничто ниже по потоку видимо на них не ссылается в том же файле — это ничего не говорит о том, что реально потребляет их тремя моделями дальше.

Граф линейности уже существует — вы, скорее всего, его не читаете

Каждый запуск dbt производит manifest.json, который полностью кодирует граф зависимостей проекта — апстрим-источники и даунстрим-потребители каждой модели, уже вычисленные. dbt ls --select +my_model+ выводит всё апстрим и даунстрим для заданной модели прямо из этого графа, без открытия dbt docs или прослеживания структуры папок вручную.

# + с обеих сторон: всё выше и ниже этой модели по потоку dbt ls --select +my_model+

Exposures превращают «ниже по потоку» в нечто конкретное

Запись в exposures.yml связывает модель с реальным потребителем вне собственного DAG dbt — дашбордом, reverse-ETL синком, отчётом, который кто-то реально смотрит. Без exposures «ничто не зависит от этой модели» означает лишь, что ничто внутри dbt от неё не зависит, а это более слабое и часто вводящее в заблуждение утверждение, если реальный потребитель — BI-инструмент, в который dbt не видит.

Делать это до breaking-изменения, а не после

Запуск dbt ls --select +model_name по селектору изменённой модели как pre-merge CI-проверка ловит случай, когда переименование или удалённый столбец ломает три даунстрим-витрины до того, как PR смёржится — а не после того, как кто-то через несколько дней заметит, что дашборд незаметно врёт.

Посмотрите, как это выглядит на вашем собственном пайплайне.

Загрузите реальный event log Spark, run_results.json от dbt или экспорт метрик Flink — и получите конкретные рекомендации, которые нужно одобрить, а не ещё одно эмпирическое правило.