dbt_valid_to_current
dbt_valid_to_current
dbt_valid_to_current는 현재(최신) 스냅샷 레코드의 dbt_valid_to 값을 나타낼 커스텀 표시값(예: 미래 날짜)을 설정하는 옵션이에요. 기본값은 NULL인데, 이 설정을 쓰면 NULL 대신 지정한 값을 사용해요. 커스텀 날짜를 지정하거나 조인·범위 필터링을 하기 편리해지죠.
출처: 문서
본문
snapshots:
- name: my_snapshot
config:
dbt_valid_to_current: "string"
{{
config(
unique_key='id',
strategy='timestamp',
updated_at='updated_at',
dbt_valid_to_current='string'
)
}}
snapshots:
<resource-path>:
+dbt_valid_to_current: "string"
dbt_valid_to_current 설정(dbt v1.9부터, 또는 dbt "v1 Latest" 릴리스 트랙에서 사용 가능)으로 현재 스냅샷 레코드의 dbt_valid_to 값에 대한 커스텀 표시값(예: 미래 날짜)을 정할 수 있어요. 기본적으로 이 값은 NULL이에요. 설정하면 dbt는 스냅샷 테이블의 현재 레코드에 대해 dbt_valid_to에 NULL 대신 지정한 값을 사용해요. 이 방식으로 커스텀 날짜를 지정하거나, 조인에서 활용하거나, 종료일이 필요한 범위 기반 필터링을 수행하기 쉬워져요.
고려사항 (Considerations)
- 날짜 표현(작성): 데이터 플랫폼과 호환되는 하드코딩된 날짜 표현을 제공해요(예:
to_date('9999-12-31')). 문법은 웨어하우스마다 다를 수 있어요(예:to_date('YYYY-MM-DD')또는date(YYYY, MM, DD)). - Jinja 제한:
dbt_valid_to_current는 정적인 SQL 표현만 허용해요.{{ var('my_future_date') }}같은 Jinja 표현은 지원되지 않아요. - Deferral 및 state:modified:
dbt_valid_to_current의 변경은 deferral 및--select state:modified와 호환돼요. 이 설정이 바뀌면state:modified선택에 나타나며, 필요한 스냅샷 업데이트를 수동으로 하라는 경고를 띄워요.
기본값 (Default)
기본적으로 스냅샷 테이블의 현재(최신) 레코드에서는 dbt_valid_to가 NULL로 설정돼요. 이는 해당 레코드가 여전히 유효하고 정의된 종료일이 없다는 뜻이에요.
NULL 대신 현재 및 미래 레코드의 dbt_valid_to에 특정 값을 쓰고 싶다면 dbt_valid_to_current 설정 옵션을 사용할 수 있어요. 예를 들어 먼 미래의 날짜인 9999-12-31을 설정하는 식이에요. dbt_valid_to_current에 할당되는 값은 데이터베이스 요구사항에 따라 유효한 날짜 또는 타임스탬프를 나타내는 문자열이어야 해요. 데이터 플랫폼 안에서 동작하는 표현을 사용하세요.
스냅샷 레코드에 미치는 영향
dbt_valid_to_current를 설정하면 스냅샷 테이블의 dbt_valid_to 컬럼을 dbt가 관리하는 방식에 영향을 줘요:
- 기존 레코드: 의도하지 않은 데이터 수정을 피하기 위해, dbt는 기존
dbt_valid_to컬럼의 현재 값을 자동으로 조정하지 않아요. 기존의 현재 레코드는 여전히dbt_valid_to가NULL로 유지돼요. - 새 레코드:
dbt_valid_to_current설정을 적용한 후 삽입되는 새 레코드는dbt_valid_to가NULL대신 지정된 값(예:'9999-12-31')으로 설정돼요.
즉, 스냅샷 테이블에는 현재 레코드의 dbt_valid_to 값이 (기존 데이터의) NULL과 (새 데이터의) 새로 지정한 값 두 가지로 섞여 있게 돼요. 현재 레코드에 대해 일관된 dbt_valid_to 값을 원한다면, 스냅샷 테이블에서 기존 레코드의 dbt_valid_to(NULL인 곳)를 dbt_valid_to_current 값과 일치하도록 수동으로 업데이트할 수 있어요.
예시 (Example)
snapshots:
- name: my_snapshot
config:
strategy: timestamp
updated_at: updated_at
dbt_valid_to_current: "to_date('9999-12-31')"
columns:
- name: dbt_valid_from
description: The timestamp when the record became valid.
- name: dbt_valid_to
description: >
The timestamp when the record ceased to be valid. For current records,
this is either `NULL` or the value specified in `dbt_valid_to_current`
(like `'9999-12-31'`).
결과 스냅샷 테이블에는 설정한 dbt_valid_to 컬럼 값이 들어있어요.
더 알아보기 (Learn more)
- 스냅샷 — dbt 스냅샷 전반
- dbt_valid_to — 유효기간 관련 Jinja 함수