소스 구성
소스 구성 (Source configurations)
소스 구성은 .yml 정의의 config: 블록 또는 dbt_project.yml 파일의 sources: 키 아래에서 할 수 있어요. 이 구성은 패키지에서 가져온 소스를 구성할 때 가장 유용해요.
출처: 문서
본문
Available configurations
(dbt v1.9 이상 적용) 소스 구성은 enabled, event_time, meta를 지원해요.
General configurations
일반 구성은 여러 리소스 타입에 적용되는 더 폭넓은 운영 설정을 제공해요. 리소스 전용 구성과 마찬가지로 프로젝트 파일, 속성 파일, 또는 리소스 전용 파일에서 설정할 수 있어요.
dbt_project.yml (dbt v1.9 이상 적용)
sources:
<resource-path>:
+enabled: true | false
+event_time: my_time_field
+freshness:
warn_after:
count: <positive_integer>
period: minute | hour | day
+meta:
key: value
models/properties.yml (dbt v1.9 이상 적용)
sources:
- name: [<source-name>]
database: <database-name>
schema: <schema-name>
config:
enabled: true | false
event_time: my_time_field
meta: {<dictionary>}
freshness:
warn_after:
count: <positive_integer>
period: minute | hour | day
tables:
- name: [<source-table-name>]
config:
enabled: true | false
event_time: my_time_field
meta: {<dictionary>}
Configuring sources
소스는 .yml 정의의 config: 블록 또는 dbt_project.yml 파일의 sources: 키 아래에서 구성할 수 있어요. 이 구성은 패키지에서 가져온 소스를 구성할 때 가장 유용해요.
패키지에서 가져온 소스를 비활성화해서 문서에 렌더링되는 것을 막거나, 패키지에서 가져온 소스 테이블에서 소스 신선도 검사가 실행되는 것을 막을 수 있어요.
- 참고: 하위 폴더의 속성 YAML 파일에 중첩된 소스 테이블을 비활성화하려면 프로젝트 YAML 파일(
dbt_project.yml)에 해당 속성 YAML 파일의 경로(하위 폴더 포함)와 소스 이름, 테이블 이름을 모두 제공해야 해요. 다음 예시는 하위 폴더의 속성 YAML 파일에 중첩된 소스 테이블을 비활성화하는 방법이에요:dbt_project.yml(dbt v1.9 이상 적용)
sources:
your_project_name:
subdirectory_name:
source_name:
source_table_name:
+enabled: false
+event_time: my_time_field
Examples
다음 예시는 dbt 프로젝트에서 소스를 구성하는 방법을 보여줘요.
패키지에서 가져온 모든 소스 비활성화
패키지에서 가져온 모든 소스에 구성을 적용하려면 sources: 구성에서 리소스 경로의 일부로 프로젝트 이름 아래에 구성을 명시해요.
dbt_project.yml
sources:
events:
+enabled: false
단일 소스 조건부 활성화
소스를 정의할 때 인라인 config 속성으로 전체 소스 또는 특정 소스 테이블을 비활성화할 수 있어요. database와 schema를 지정해 대상 데이터베이스와 스키마를 덮어쓸 수도 있어요:
models/sources.yml
sources:
- name: my_source
database: raw
schema: my_schema
config:
enabled: true
tables:
- name: my_source_table # enabled
- name: ignore_this_one # not enabled
config:
enabled: false
특정 소스 테이블을 구성하고 그 구성의 입력으로 변수를 사용할 수 있어요:
models/sources.yml
sources:
- name: my_source
tables:
- name: my_source_table
config:
enabled: "{{ var('my_source_table_enabled', false) }}"
패키지에서 가져온 단일 소스 비활성화
다른 패키지의 특정 소스를 비활성화하려면 구성의 리소스 경로를 패키지 이름과 소스 이름 둘 다로 한정해요. 이 경우 events 패키지의 clickstream 소스를 비활성화하고 있어요.
dbt_project.yml
sources:
events:
clickstream:
+enabled: false
마찬가지로 리소스 경로를 패키지 이름, 소스 이름, 테이블 이름으로 한정해 소스의 특정 테이블을 비활성화할 수 있어요:
dbt_project.yml
sources:
events:
clickstream:
pageviews:
+enabled: false
event_time으로 소스 구성
(dbt v1.9 이상 적용)
event_time으로 소스를 구성하려면 소스 구성에 event_time 필드를 지정해요. 이 필드는 로딩 날짜 같은 것이 아니라 이벤트의 실제 타임스탬프를 나타내는 데 사용해요. 예를 들어 events 소스에 clickstream이라는 소스 테이블이 있다면 event_timestamp 컬럼의 각 이벤트 타임스탬프를 다음과 같이 사용할 수 있어요:
dbt_project.yml
sources:
events:
clickstream:
+event_time: event_timestamp
이 예시에서 event_time은 event_timestamp로 설정되며, 이는 각 clickstream 이벤트가 발생한 정확한 시간이에요.
이것은 인크리멘털 마이크로배칭 전략에 필요할 뿐 아니라, CI와 프로덕션 환경 간에 데이터를 비교할 때 dbt가 event_timestamp를 사용해 이벤트 기반 시간대별로 데이터를 필터링·매칭해서, 겹치는 시간대만 비교되도록 보장해요.
소스에 meta 구성
meta 필드를 사용해 소스에 메타데이터 정보를 할당해요. 추가 컨텍스트, 문서화, 로깅 등을 추적하는 데 유용해요.
예를 들어 clickstream 소스에 데이터 소스 시스템에 대한 정보를 담는 meta 정보를 추가할 수 있어요:
dbt_project.yml
sources:
events:
clickstream:
+meta:
source_system: "Google analytics"
data_owner: "marketing_team"
소스 신선도 구성
freshness 블록을 사용해 테이블이 새 데이터로 얼마나 자주 갱신될 것으로 기대하는지 정의하고, 그 기대가 충족되지 않을 때 경고와 에러를 발생시켜요.
dbt는 신선도 검사가 실행될 때 현재 타임스탬프와, 컬럼·웨어하우스 메타데이터·커스텀 쿼리에서 계산한 가장 최근 갱신 타임스탬프를 비교해요.
warn_after와 error_after 파라미터 중 하나 또는 둘 다 제공할 수 있어요. 둘 다 제공하지 않으면 dbt는 이 소스의 테이블에 대한 신선도 스냅샷을 계산하지 않아요. 자세한 내용은 freshness를 참고해 주세요.
freshness 구성을 사용하는 dbt_project.yml 파일 예시를 볼게요:
dbt_project.yml
sources:
<resource-path>:
+freshness:
warn_after:
count: 4
period: hour
Example source configuration
다음은 다음 조건을 가진 프로젝트의 유효한 소스 구성이에요:
name: jaffle_shop- 여러 소스 테이블을 담은
events라는 패키지
dbt_project.yml
name: jaffle_shop
config-version: 2
...
sources:
# project names
jaffle_shop:
+enabled: true
events:
# source names
clickstream:
# table names
pageviews:
+enabled: false
link_clicks:
+enabled: true
더 알아보기 (Learn more)
- Source properties — 소스 속성 정의
- Sources — 소스 개념
- Freshness — 신선도 구성