dbt
Средний уровеньКак узнать, что сломается ниже по потоку, прежде чем менять модель dbt?
Граф линейности уже существует в manifest.json каждого запуска dbt. Вопрос в том, проверяете ли вы его до того, как изменение уедет, или узнаёте о проблеме от сломанного дашборда после.
Переименованный столбец или удалённая модель выглядят безопасно в диффе PR, если ничто ниже по потоку видимо на них не ссылается в том же файле — это ничего не говорит о том, что реально потребляет их тремя моделями дальше.
Граф линейности уже существует — вы, скорее всего, его не читаете
Каждый запуск dbt производит manifest.json, который полностью кодирует граф зависимостей проекта — апстрим-источники и даунстрим-потребители каждой модели, уже вычисленные. dbt ls --select +my_model+ выводит всё апстрим и даунстрим для заданной модели прямо из этого графа, без открытия dbt docs или прослеживания структуры папок вручную.
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 — и получите конкретные рекомендации, которые нужно одобрить, а не ещё одно эмпирическое правило.