access
access
모델의 접근 레벨을 지정하는 설정이에요. private, protected, public 중에서 선택할 수 있고, 기본값은 protected예요.
출처: 문서
본문
models/<schema>.yml:
models:
- name: model_name
config:
access: private | protected | public
# changed to config in v1.10
config 파일(dbt_project.yml 포함)에서 접근 수정자를 적용하거나, properties.yml에서 모델별로 하나씩 적용할 수 있어요. 하위 폴더에 access 설정을 적용하면 해당 하위 폴더의 모든 모델 기본값이 변경되므로, 이 동작을 의도했는지 반드시 확인하세요. 개별 모델 접근을 설정할 때는 그룹이나 하위 폴더가 다양한 접근 레벨을 포함할 수 있으므로, 모델을 access: public으로 지정할 때도 의도했는지 확인하세요.
호환성을 위해 access는 최상위 키로 지원되지만, config 상속 기능은 없어요.
access를 설정하는 방법은 여러 가지가 있어요:
- properties.yml에서 구식 방법으로 (dbt v1.9 이하) — 모델 바로 아래 최상위에:
models/properties_my_public_model.yml:models: - name: my_public_model access: public - properties.yml에서 최신 방법으로 (v1.10 이상) — 같은 모델에 구식 방법과 최신 방법을 동시에 쓰지 마세요:
models/properties_my_public_model.yml:models: - name: my_public_model config: access: public - dbt_project.yml에서:
dbt_project.yml:models: my_project_name: subfolder_name: +group: my_group +access: private # sets default for all models in this subfolder - my_public_model.sql 파일에서:
models/my_public_model.sql:-- models/my_public_model.sql {{ config( access = "public" ) }} select ...
access를 정의한 뒤에는 변경 사항을 적용하려면 프로덕션 작업(production job)을 다시 실행하세요.
정의 (Definition)
속성을 선언하는 모델의 접근 레벨이에요.
일부(전부는 아닌) 모델은 그룹 간 ref 함수를 통해 참조되도록 설계돼요.
| Access | Referenceable by |
|---|---|
| private | Same group |
| protected | Same project/package |
| public | Any group, package, or project. |
지원되는 접근 범위 밖에서 모델을 참조하려 하면 에러가 발생해요:
dbt run -s marketing_model
...
dbt.exceptions.DbtReferenceError: Parsing Error
Node model.jaffle_shop.marketing_model attempted to reference
node model.jaffle_shop.finance_model,
which is not allowed because the referenced
node is private to the finance group.
(dbt v1.12 이상에 적용)
매크로가 dbt run-operation으로 호출될 때는 dbt가 모델 접근이나 그룹 제어를 강제하지 않아요. 따라서 ref()로 모든 모델(비공개·protected 포함)을 참조할 수 있어요.
기본값 (Default)
기본적으로 모든 모델은 "protected"예요. 즉 같은 프로젝트의 다른 모델이 참조할 수 있어요.
관련 문서 (Related docs)
- Model Access
- Group configuration
더 알아보기 (Learn more)
- 리소스 설정 전체 목록은 Resource configurations 문서를 참고하세요.
group설정을 함께 사용하면 그룹 단위로 접근 범위를 더 세밀하게 제어할 수 있어요.