pre_clone
pre_clone (사전 클론)
pre_clone 설정은 dbt State가 실행 전에 개발 환경의 incremental 모델과 스냅샷을 프로덕션 대응물을 클론해 미리 채울지, 언제 채울지를 제어해요. never, if_missing(기본값), always 세 값을 받아요.
출처: dbt 공식 문서
본문
설정 방법
프로젝트 YAML 파일
dbt_project.yml
models:
<resource-path>:
+state:
pre_clone: never | if_missing | always
프로퍼티 YAML 파일
models/
models:
- name: my_model
config:
state:
pre_clone: never | if_missing | always
SQL 파일 설정
models/
{{ config(
state={
"pre_clone": "never" | "if_missing" | "always"
}
) }}
정의
pre_clone은 dbt State가 실행 전에 개발 환경의 incremental 모델과 스냅샷을 프로덕션 대응물을 클론해 미리 채울지, 언제 채울지를 제어해요.
| 값 | 동작 |
|---|---|
never |
절대 사전 클론하지 않아요. incremental 모델과 스냅샷은 개발 환경에 존재하는 것에서 시작해요. 없으면 처음부터 빌드해요. |
if_missing (기본값) |
개발 환경에 대상 테이블이 아직 없을 때만 클론해요. 첫 클론 이후에는 클론된 데이터 위에서 점진적으로 빌드해요. |
always |
개발 테이블이 이미 존재하든 말든 매 실행 전에 클론해요. 매 실행마다 개발 incremental 상태가 프로덕션과 일치함을 보장해요. |
참고
incremental이 아닌 materialization은 절대 사전 클론되지 않아요. 이 설정은 그런 것들에는 효과가 없어요.
예시
개발을 항상 프로덕션과 동기화하기
매 실행 전에 개발이 현재 프로덕션 상태를 반영하길 원할 때 always를 사용해요.
models/fct_orders.yml
models:
- name: fct_orders
config:
state:
pre_clone: always
개발 상태를 프로덕션에서 격리하기
개발이 프로덕션에서 완전히 독립적이길 원할 때 never를 사용해요.
dbt_project.yml
models:
+state:
pre_clone: never