dbt 테스트 소개

중급 dbt

Mike Metzger

Data Engineer

테스트란?

  • dbt 객체에 대한 단언/유효성 검사
    • 모델
    • 소스와 시드
  • 데이터가 기대대로인지 확인
    • NULL 값
    • 값 범위
    • 데이터 간 관계
    • 사용자 지정 테스트(추후 다룸)
중급 dbt

테스트 유형

dbt는 세 가지 테스트를 제공합니다

  1. 기본 제공(사전 정의 4개)
  2. 단일형*
  3. 범용형*

$$

  • 추후 다룸
중급 dbt

기본 제공 테스트

  • unique
    • 모든 값이 고유한지 확인
  • not_null
    • 모든 값이 NULL이 아님을 확인
  • accepted_values
    • 모든 값이 지정 목록 내인지 확인
    • values: [a, b, c, d]
  • relationships
    • 특정 테이블/컬럼과의 연결 확인
    • to: ref('table')
    • field: id
중급 dbt

테스트 적용 위치

  • models/model_properties.yml
    • 파일명은 아무거나 가능
    • models/schema.yml
  • tests: 하위 항목에 정의
version: 2

models:
  - name: taxi_rides_raw
    columns:
      - name: tpep_pickup_datetime
        tests:
          - not_null
      - name: payment_type
        tests:
          - not_null
          - accepted_values:
              values: [1, 2, 3, 4, 5, 6]
중급 dbt

테스트 실행

  • dbt test
    • dbt test --select modelname
  • 출력이 통과했는지 확인
  • 실패 시, 컴파일된 SQL과 대조하여 확인

dbt 실패한 테스트 출력

중급 dbt

실패 찾기

  1. 컴파일된 SQL 코드를 찾습니다
  2. target/compiled/projectname/models/model_properties.yml 디렉터리에서
    • target/compiled/nyc_yellow_taxi/models/model_properties.yml/
  3. 해당 실패 테스트에 맞는 .sql 파일을 찾습니다
  4. 내용을 DB 클라이언트에 복사해 문제 위치를 확인합니다
  5. 데이터에서 제거 후 dbt run / dbt test 재실행
중급 dbt

Ayo berlatih!

중급 dbt

Preparing Video For Download...