프로젝트 플래그
프로젝트 플래그 (Project flags)
dbt_project.yml의 flags: 딕셔너리에서 글로벌 설정을 정의하는 방법을 다뤄요. 이곳은 동작 변경을 해제할 수 있는 유일한 곳이며, 설정 우선순위 규칙도 설명해요.
출처: 문서
본문
dbt_project.yml
flags:
<global_config>: <value>
모든 플래그의 표를 참고해 dbt_project.yml에서 설정할 수 있는 글로벌 구성이 무엇인지 확인해 보세요.
flags 딕셔너리는 레거시 동작이 여전히 지원되는 동안 동작 변경을 해제할 수 있는 유일한 곳이에요.
설정 우선순위 (Config precedence)
플래그를 설정하는 방법은 여러 가지가 있으며, 용도에 따라 달라요:
- CLI 옵션: 이번 실행에서만 동작을 정의해요. 모든 dbt 명령에서 지원돼요.
- 환경 변수: 실행 환경(개발 vs 프로덕션 vs 지속적 통합)에 따라 다른 동작을 정의하거나, 개발 환경에서 사용자별로 다른 동작(개인 취향)을 정의해요.
- dbt_project.yml의 프로젝트 레벨 플래그: 이 프로젝트를 실행하는 모든 사람에게 적용되는 버전 관리된 기본값을 정의해요. 또한 레거시 기능에서 벗어나기 위해 동작 변경을 선택하거나 해제할 수도 있어요.
- 사용자 설정 (~/.dbt/user_settings.yml): 내 머신의 모든 프로젝트에 적용되는 개인 취향을 정의해요.
dbt login이 자동으로 작성해요.
가장 구체적인 설정이 "승리"해요. CLI 옵션이 가장 우선순위가 높고, 그다음 환경 변수, dbt_project.yml, 마지막으로 user_settings.yml 순서예요. 어디에도 플래그를 설정하지 않으면 dbt 안에 정의된 기본값을 사용해요.
대부분의 플래그는 세 곳 모두에서 설정할 수 있어요:
# dbt_project.yml
flags:
# set default for running this project -- anywhere, anytime, by anyone
fail_fast: true
(dbt v1.11 이상)
# set this environment variable to 'True' (bash syntax)
export DBT_ENGINE_FAIL_FAST=1
dbt run
dbt run --fail-fast # set to True for this specific invocation
dbt run --no-fail-fast # set to False
예외에는 두 가지 범주가 있어요:
- 파일 경로를 설정하는 플래그: 런타임 실행과 관련된 파일 경로용 플래그(예:
--log-path또는--state)는 dbt_project.yml에 설정할 수 없어요. 기본값을 덮어쓰려면 CLI 옵션을 전달하거나 환경 변수((dbt v1.11 이상)DBT_ENGINE_LOG_PATH,DBT_ENGINE_STATE)를 설정해야 해요. dbt에 프로젝트 리소스 위치를 알려주는 플래그(예:model-paths)는 dbt_project.yml에 설정하되,flags딕셔너리 밖의 최상위 키로 설정해요. 이런 설정은 완전히 정적이며 명령이나 실행 환경에 따라 달라지지 않을 것으로 기대돼요. - 옵트인 플래그: 동작 변경을 선택하거나 해제하는 플래그는 dbt_project.yml에서만 정의할 수 있어요. 이런 플래그는 버전 관리에 설정하고 pull/merge request로 마이그레이션하도록 의도돼요. 값이 실행·환경·사용자에 따라 무한정 달라지면 안 돼요.
더 알아보기 (Learn more)
- About global configs — 모든 플래그 목록
- 환경 변수 설정 — 환경 변수 설정 방법