dbt source 명령어

dbt source 명령어

dbt source 명령어는 dbt v2.0 이상에서 제공되는 레거시 하위 명령어예요. 소스(freshness) 전용 평가를 수행하는 dbt source freshness라는 한 가지 하위 명령어를 제공해요. v2에서는 dbt freshness라는 최상위 명령어를 써서 소스와 모델을 하나의 명령어로 freshness 임계값 기준으로 함께 평가하는 걸 권장해요.

출처: 문서

본문

Freshness

(적용 범위: dbt v2.0 이상)

프로젝트에 소스가 설정되어 있다면, dbt는 각 소스 테이블에 지정된 freshness config로부터 해당 테이블의 신선도(freshness)를 판단해요. 테이블이 오래(stale) 상태라면 dbt는 그에 따라 warning이나 error를 보고하고 0이 아닌 exit code로 종료돼요. 소스 freshness를 평가하려면 dbt freshness를 실행하세요.

Freshness 구성 (Configure freshness)

아래 예시는 dbt에서 소스 freshness를 구성하는 방법을 보여줘요. 자세한 내용은 소스 freshness 선언하기(Declaring source freshness)를 참고하세요.

models/<filename>.yml

sources:
  - name: jaffle_shop
    database: raw
    config:
      freshness: # changed to config in v1.9
        warn_after: {count: 12, period: hour}
        error_after: {count: 24, period: hour}

      loaded_at_field: _etl_loaded_at # changed to config in v1.10

    tables:
      - name: customers

      - name: orders
        config:
          freshness: 
            warn_after: {count: 6, period: hour}
            error_after: {count: 12, period: hour}
            filter: datediff('day', _etl_loaded_at, current_timestamp) < 2

      - name: product_skus
        config:
          freshness: null 

이렇게 하면 데이터 파이프라인의 건강 상태를 모니터링하는 데 도움이 돼요. 소스 freshness는 dbt 플랫폼 잡(Job)의 Settings 페이지에서 Execution settings 섹션에서도 구성할 수 있어요. 자세한 내용은 소스 freshness 체크 활성화(Enabling source freshness checks)를 참고하세요.

특정 소스만 평가 (Evaluate specific sources)

(적용 범위: dbt v2.0 이상)

기본적으로 dbt freshness는 프로젝트에서 freshness config가 있는 모든 소스와 모델을 평가해요. 소스의 일부만 평가하려면 --select 플래그를 사용하세요.

# Evaluate freshness for all Snowplow tables:
$ dbt freshness --select "source:snowplow"

# Evaluate freshness for a particular source table:
$ dbt freshness --select "source:snowplow.event"

Freshness 출력 (Freshness output)

(적용 범위: dbt v2.0 이상)

dbt freshness가 끝나면 평가된 소스와 모델의 결과를 target/freshness.json에 기록해요. 각 항목에는 해당 리소스가 소스인지 모델인지 알려주는 resource_type 필드가 포함돼요. 전체 스키마는 freshness.json 문서를 참고하세요. 실행에 소스가 포함될 때마다 dbt는 하위 호환성을 위해 target/sources.json도 함께 기록해요. 이 파일은 소스만 포함하며 resource_type 필드는 없어요. 전체 스키마는 sources.json 문서를 참고하세요.

Freshness 결과 활용 (Using freshness results)

(적용 범위: dbt v2.0 이상)

Freshness 결과는 소스나 모델이 지연(delayed) 상태인지, freshness가 시간에 따라 어떻게 변하는지 이해하는 데 도움을 줘요. dbt freshness로 언제든 수동으로 freshness를 평가할 수 있어요. 또한 일정을 두고 실행해 주기적으로 결과를 저장하는 걸 권장해요. 이렇게 축적된 종단(longitudinal) 결과는 소스 데이터 freshness SLA가 위반될 때 알림을 받고, 시간에 따른 freshness 추세를 파악할 수 있게 해줘요.

dbt는 freshness 체크를 일정으로 손쉽게 실행할 수 있게 하며, 프로젝트에 정의된 소스들의 freshness 상태를 보여주는 대시보드를 기본 제공해요. 자세한 내용은 소스 데이터 freshness(Source data freshness) 문서를 참고하세요.

더 알아보기 (Learn more)