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/.yml

models:
  - name: my_model
    config:
      state:
        pre_clone: never | if_missing | always

SQL 파일 설정

models/.sql

{{ 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

더 알아보기 (Learn more)