Ref и запуск зависимых моделей
Одним из базовых макросов в dbt – это ref, при котором вы явно указываете зависимость одной модели от другой, а также на основе этого будет строиться граф и data lineage. Весьма удобная штуковина, за одним малым исключением. Исключением из разряда «хотели как лучше, получилось как всегда».
Разработчики dbt логично предположили, что если одна модель не отработала и упала с ошибкой, то зачем тратить ресурсы на запуск модели, которая зависит от первой. Тем самым, запуская с помощью dbt run две модели, где одна зависит от другой через ref, и первая модель падает, вторая (зависимая) будет пропущена и не запустится.
Звучит действительно логично, но далеко не для всех ситуаций. Представим, что при построении витрины вы джойните справочник, который обновляется раз в месяц, и данные в нем не являются чем-то критичным, влияют на расчет никому не нужного столбца. Но справочник стал обновляться с ошибкой, и вся витрина теперь не запускается.
И опять же это встроенная функция, которые не выключить. Лишь запускать витрины и источники в разных потоках, что уже не так удобно.