Как dbt State определяет, что модель изменилась?
dbt State учитывает только существенные изменения модели. Поскольку dbt State понимает всю цепочку зависимостей ваших моделей, он может учитывать такие особенности, как пробельные символы и псевдонимы, чтобы определить, одинакова ли модель в разных окружениях или различается.
По умолчанию dbt State сравнивает SQL-код, полученный после рендеринга, для обнаружения изменений кода. Любое изменение такого SQL-кода — в том числе вызванное недетерминированными макросами или переменными окружения — приводит к пересборке.
Вы можете включить compare_unrendered_code, чтобы дополнительно проверять шаблон Jinja (код до рендеринга). При включённой настройке пересборка происходит только тогда, когда изменились и шаблон, и SQL-код после рендеринга. Недетерминированные значения (например, {{ env_var('AIRFLOW_RUN_ID') }} или макрос, вызывающий uuid()) не приводят к пересборке, пока сам шаблон остаётся неизменным, что помогает избежать ненужных затрат на вычисления в хранилище данных.