# Уникальные имена ресурсов проекта

| require\_unique\_project\_resource\_names | dbt **v1 Latest** | dbt v1 |
| ----------------------------------------- | ----------------- | ------ |
| Введён                                    | 2025.12           | 1.11.0 |
| Стабилизирован (по умолчанию → `true`)    | —                 | —      |
| Удалён                                    | —                 | —      |

Флаг `require_unique_project_resource_names` обеспечивает уникальность имён ресурсов в пределах одного пакета. Ресурсы dbt, такие как модели, seed-файлы, снимки, анализы, тесты и функции, используют общее пространство имён. Если два ресурса в одном пакете имеют одинаковое имя, dbt должен определить, на какой из них ссылается вызов `ref()` или `source()`. Ранее эта проверка выполнялась не всегда, поэтому дублирующиеся имена могли приводить к тому, что dbt ссылался не на тот ресурс.

По умолчанию флаг `require_unique_project_resource_names` имеет значение `false`. При этом, если два неверсионируемых ресурса в одном пакете имеют одинаковое имя, dbt продолжает работу и выдаёт предупреждение [`DuplicateNameDistinctNodeTypesDeprecation`](https://docs.getdbt.tech/reference/deprecations.md#duplicatenamedistinctnodetypesdeprecation). Если установлено значение `true`, dbt выдаёт ошибку `DuplicateResourceNameError`.

Например, если в вашем проекте есть модель и seed-файл с именем `sales`:

```text
models/sales.sql
seeds/sales.csv
```

А одна из моделей содержит:

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

Если флаг имеет значение `true`, dbt выдаст ошибку:

```text
DuplicateResourceNameError: Found resources with the same name 'sales' in package 'project': 'model.project.sales' and 'seed.project.sales'. Please update one of the resources to have a unique name.
```

При возникновении этой ошибки переименуйте один из ресурсов или измените структуру проекта, чтобы избежать конфликтов имён.
