# Порядок поиска 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`:

my\_package/model\_downstream.sql

```sql
select * from {{ ref('model_upstream') }}
```

По умолчанию dbt ищет `model_upstream` в следующем порядке:

1. Сначала в `my_project` (корневом проекте)
2. Затем в `my_package` (где определена модель)

Если установить флаг `require_ref_searches_node_package_before_root` в `true`, dbt будет искать в пакете, где определена модель, *прежде чем* искать в корневом проекте.

В том же примере dbt ищет `model_upstream` в следующем порядке:

1. Сначала в `my_package` (где определена модель)
2. Затем в `my_project` (корневом проекте)

Текущее поведение по умолчанию считается [ошибкой в dbt](https://github.com/dbt-labs/dbt/issues/11351), поскольку оно может приводить к неожиданным циклическим зависимостям. Однако это поведение существует уже давно, поэтому для изменения порядка поиска требуется установить `require_ref_searches_node_package_before_root` в `true`, чтобы не нарушить работу существующих проектов.
