dbt_project.yml
dbt_project.yml
dbt_project.yml 파일은 모든 dbt 프로젝트에 필수인 파일이에요. 여기에는 dbt가 프로젝트를 어떻게 운영할지 알려주는 중요한 정보가 들어 있어요.
모든 dbt 프로젝트에는 dbt_project.yml 파일이 필요해요. 바로 이 파일 덕분에 dbt가 디렉터리를 dbt 프로젝트로 인식해요. 또 프로젝트를 운영하는 데 필요한 중요한 정보도 담고 있어요. 동작 방식은 다음과 같아요:
-
dbt는 여러 곳에서 YAML을 사용해요. YAML이 처음이라면 배열, 사전, 문자열이 어떻게 표현되는지 배워두는 게 좋아요.
-
기본적으로 dbt는 현재 작업 디렉터리와 그 상위 디렉터리에서
dbt_project.yml을 찾지만,--project-dir플래그나 (앱: dbt v1.11 이상)DBT_ENGINE_PROJECT_DIR환경 변수로 다른 디렉터리를 설정할 수 있어요. -
dbt_project.yml파일에서project-id를 사용해dbt-cloud설정 아래 dbt 프로젝트 ID를 지정해요. dbt 프로젝트 URL에서 프로젝트 ID를 찾아요: 예를 들어https://YOUR_ACCESS_URL/develop/projects/123456에서 프로젝트 ID는123456이에요. -
참고로,
dbt_project.yml파일에는 설정(config)이 아닌 "속성(property)"은 설정할 수 없어요(예: macros). 이는 모든 유형의 리소스에 적용돼요. 자세한 내용은 Configs and properties를 참고해요.
출처: 문서
본문
예시
다음 예시는 dbt_project.yml 파일에서 사용할 수 있는 모든 설정의 목록이에요:
dbt_project.yml
name: string
config-version: 2
version: version
profile: profilename
model-paths: [directorypath]
seed-paths: [directorypath]
test-paths: [directorypath]
analysis-paths: [directorypath]
macro-paths: [directorypath]
snapshot-paths: [directorypath]
docs-paths: [directorypath]
asset-paths: [directorypath]
function-paths: [directorypath]
osi-paths: [directorypath]
check-paths: [directorypath]
skill-paths: [directorypath]
packages-install-path: directorypath
clean-targets: [directorypath]
query-comment: string
require-dbt-version: version-range | [version-range]
flags:
<global-configs>
dbt-cloud:
project-id: project_id # Required
defer-env-id: environment_id # Optional
account_id: account_id # Optional, v2 only; note the underscore, unlike the other dbt-cloud fields
account-host: account-host # Defaults to 'cloud.getdbt.com'; Required if use a different Access URL
analyses: # Requires the require_corrected_analysis_fqns flag; available starting v1.12
<analysis-configs>
exposures:
+enabled: true | false
quoting:
database: true | false
schema: true | false
identifier: true | false
snowflake_ignore_case: true | false # v2-only config. Aligns with Snowflake's session parameter QUOTED_IDENTIFIERS_IGNORE_CASE behavior.
# Ignored by dbt v1 and other adapters.
metrics:
<metric-configs>
models:
<model-configs>
seeds:
<seed-configs>
semantic-models:
<semantic-model-configs>
saved-queries:
<saved-queries-configs>
skills:
<skill-configs>
snapshots:
<snapshot-configs>
sources:
<source-configs>
checks:
<check-configs>
data_tests:
<test-configs>
info_schema:
version: 1 # Pins which version of the dbt Information Schema the {{ info_schema() }} macro resolves to
vars:
<variables>
on-run-start: sql-statement | [sql-statement]
on-run-end: sql-statement | [sql-statement]
dispatch:
- macro_namespace: packagename
search_order: [packagename]
restrict-access: true | false
functions:
<function-configs>
+ 접두사
dbt는 폴더 이름과 설정을 + 접두사를 붙여 구분해요. + 접두사는 설정(config)에 만 사용하며 dbt_project.yml에서 해당 리소스 키 아래 적용돼요. 다음에는 적용되지 않아요:
- 리소스 파일 안의
config()Jinja 매크로 .yml파일의 config 속성
자세한 내용은 Using the + prefix를 참고해요.
명명 규칙
dbt_project.yml 파일의 설정에 올바른 YAML 명명 규칙을 따르는 게 중요해요. 그래야 dbt가 제대로 처리할 수 있거든요. 특히 단어가 두 개 이상인 리소스 타입에서 중요해요.
-
dbt_project.yml파일에서 여러 단어의 리소스 타입을 구성할 때는 대시(-)를 사용해요. saved queries의 예시는 다음과 같아요:dbt_project.yml
saved-queries: # Use dashes for resource types in the dbt_project.yml file. my_saved_query: +cache: enabled: true -
dbt_project.yml파일이 아닌 YAML 파일에서 여러 단어의 리소스 타입을 구성할 때는 밑줄(_)을 사용해요. 예를 들어semantic_models.yml파일의 같은 saved queries 리소스는 다음과 같아요:models/semantic_models.yml
saved_queries: # Use underscores everywhere outside the dbt_project.yml file. - name: saved_query_name ... # Rest of the saved queries configuration. config: cache: enabled: true
더 알아보기 (Learn more)
dbt_project.yml은 프로젝트 전역 설정(경로, vars, on-run 훅, 모델 설정 등)을 담는 필수 파일이에요.- 관련 개념: dbt_cloud.yml, configs and properties.