+ 접두사 사용하기
+ 접두사 사용하기 (The + prefix)
+ 접두사는 dbt_project.yml 파일에서 리소스 경로(resource path)와 설정(config)의 차이를 명확히 구분해주는 dbt 문법 기능이에요. (dbt v2.0 이상에 적용돼요.)
출처: dbt 공식 문서
본문
+ 접두사는 dbt_project.yml 파일에서 리소스 경로와 설정을 구분하는 데 도움을 주는 dbt 문법 기능이에요.
-
config-version1을 쓰는dbt_project.yml파일과는 호환되지 않아요. -
다음에는 적용되지 않아요.
- 리소스 파일 안의
config()Jinja 매크로 .yml파일 안의 config 프로퍼티
- 리소스 파일 안의
예를 들어:
dbt_project.yml
name: jaffle_shop
config-version: 2
...
models:
+materialized: view
jaffle_shop:
marts:
+materialized: table
이 문서 전반에 걸쳐 우리는 dbt_project.yml 파일에서 설정 키에 + 접두사를 사용해요.
config-version 2를 쓰는 프로젝트에서는 dbt가 설정 키에 + 접두사를 쓰길 기대해요. + 접두사 없이 설정을 지정하는 것은 비권장(deprecated)돼요. 리소스 설정 안의 폴더와 파일 이름은 여전히 + 접두사를 쓰지 않아요.
+ 접두사는 설정용으로 예약돼 있으므로, 리소스 경로의 폴더와 파일 이름은 +로 시작하면 안 돼요. dbt v2에서는 +로 시작하는 리소스 경로에 대해 경고를 발생시키고, require_resource_names_without_plus_prefix 동작 변경 플래그를 활성화하면 오류를 발생시켜요. +my_folder라는 폴더가 있다면 + 접두사를 제거하도록 이름을 바꿔요.
+ 접두사는 리소스 경로와 설정을 구분해야 할 때 특히 중요해요. 예를 들어:
- 설정이 입력으로 딕셔너리를 받을 때, 예를 들어
persist_docs. - 설정이 리소스 경로의 일부와 키를 공유할 때, 예를 들어
tags라는 모델 디렉터리.
dbt는 dbt_project.yml에서 + 접두사 없이 설정을 지정하는 것을 비권장해요. dbt_project.yml의 리소스 설정 안에서는 폴더와 파일 이름만 + 접두사 없이 지정할 수 있어요.
이 비권장 경고는 다음 어댑터에 대해서만 발생해요.
- Snowflake
- Databricks
- BigQuery
- Redshift
dbt_project.yml
name: jaffle_shop
config-version: 2
...
models:
+persist_docs: # this config is a dictionary, so needs a + prefix
relation: true
columns: true
jaffle_shop:
+schema: my_schema
+tags: # this is the tags config
- "hello"
config:
tags: # resource path (models/tags/), not the tags config
# config: disambiguates path vs. config (required in v1.10+)
# The below config applies to models in the models/tags/ directory.
+materialized: view
참고: dbt_project.yml에서 + 접두사를 쓰는 것은 다른 설정에서 (clobber vs. add 방식으로) 설정 병합 동작을 제어하기 위해 +를 쓰는 것과는 구별돼요. 현재 +로 설정 병합 동작을 제어하는 것을 지원하는 유일한 설정은 grants예요.
더 알아보기 (Learn more)
- resource-path — 리소스 경로 개념
- dbt_project.yml 설정 — 프젝트 파일 작성 방법
- grants — 설정 병합 동작을 제어하는
+