Порядок поиска ref в пакетах
| require_ref_searches_node_package_before_root | dbt v1 Latest | dbt v1 |
|---|---|---|
| Введён | 2025.12 | 1.11.0 |
Стабилизирован (значение по умолчанию → true) | — | — |
| Удалён | — | — |
Флаг require_ref_searches_node_package_before_root управляет порядком поиска при разрешении dbt вызовов ref(), определённых внутри пакета.
По умолчанию флаг имеет значение false в v1 Latest и dbt v1.11. При разрешении ref() в модели пакета dbt сначала ищет модель, на которую указывает ссылка, в корневом проекте, а затем — в пакете, где определена модель.
Например, следующая модель из пакета my_package импортируется проектом my_project:
select * from {{ ref('model_upstream') }}
По умолчанию dbt ищет model_upstream в следующем порядке:
- Сначала в
my_project(корневом проекте) - Затем в
my_package(где определена модель)
Если установить флаг require_ref_searches_node_package_before_root в true, dbt будет искать в пакете, где определена модель, прежде чем искать в корневом проекте.
В том же примере dbt ищет model_upstream в следующем порядке:
- Сначала в
my_package(где определена модель) - Затем в
my_project(корневом проекте)
Текущее поведение по умолчанию считается ошибкой в dbt, поскольку оно может приводить к неожиданным циклическим зависимостям. Однако это поведение существует уже давно, поэтому для изменения порядка поиска требуется установить require_ref_searches_node_package_before_root в true, чтобы не нарушить работу существующих проектов.