고유한 프로젝트 리소스 이름
고유한 프로젝트 리소스 이름 (Unique project resource names)
require_unique_project_resource_names 플래그는 같은 패키지 내 리소스 이름의 고유성을 강제해요. 기본값은 false예요. true로 설정하면 중복 이름에 대해 DuplicateResourceNameError 오류가 발생해요.
출처: 문서
본문
| require_unique_project_resource_names | dbt v1 Latest | dbt v1 |
|---|---|---|
| Introduced | 2025.12 | 1.11.0 |
Matured (default → true) |
— | — |
| Removed | — | — |
require_unique_project_resource_names 플래그는 같은 패키지 내 리소스 이름의 고유성을 강제해요. 모델, 시드, 스냅샷, 분석, 테스트, 함수 같은 dbt 리소스는 공통 네임스페이스를 공유해요. 같은 패키지의 두 리소스가 같은 이름을 가지면 dbt는 ref()나 source()가 어느 리소스를 가리키는지 결정해야 해요. 이전에는 이 검사가 항상 강제되지 않아 중복 이름이 dbt가 잘못된 리소스를 참조하게 할 수 있었어요.
require_unique_project_resource_names 플래그는 기본값이 false예요. 이 설정에서는 같은 패키지의 두 버전 없는 리소스가 같은 이름을 공유하면 dbt가 계속 실행하고 DuplicateNameDistinctNodeTypesDeprecation 경고를 발생시켜요. true로 설정하면 dbt는 DuplicateResourceNameError 오류를 발생시켜요.
예를 들어 프로젝트에 sales라는 모델과 시드가 있다면:
models/sales.sql
seeds/sales.csv
그리고 모델에 다음이 포함돼 있다면:
select * from {{ ref('sales') }}
플래그를 true로 설정하면 dbt는 다음을 발생시켜요:
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.
이 오류가 발생하면 리소스 중 하나를 이름 변경하거나 프로젝트 구조를 리팩터링해 이름 충돌을 피해요.