사용자 정의 재사용 가능 테스트 만들기

중급 dbt

Mike Metzger

Data Engineer

재사용 가능 테스트란?

  • 여러 상황에 재사용 가능한 테스트
  • 내장 dbt 테스트와 유사하나 임의 조건 검사 가능
  • Jinja 템플릿 사용
  • tests/generic 폴더의 .sql 파일로 저장
  • 사용하는 각 모델의 model_properties.yml에 추가해야 함

재사용 가능

1 Unsplash의 Sigmund 사진
중급 dbt

재사용 가능 테스트 만들기

{% test check_gt_0(model, column_name) %}

select * 
from {{ model }}
where {{ column_name }} > 0

{% endtest %}
  1. 첫 줄(최소): {% test testname(model, column_name) %}
  2. {{ object }} 치환과 함께 SQL 쿼리 작성
  3. {% endtest %}로 종료
중급 dbt

모델에 재사용 테스트 적용

  • model_properties.yml에 추가
  • 필요한 객체를 정의
  • models: name 값 → model 인수
  • columns: name 값 → column_name 인수
version: 2

models:
  - name: taxi_rides_raw
    columns:
      - name: tpep_pickup_datetime
        tests:
          - not_null

- name: total_fare tests: - check_gt_0
중급 dbt

추가 매개변수

  • 테스트에 추가 매개변수 사용 가능
  • accepted_values, relationships와 유사
  • Jinja 헤더의 인수로 추가
{% test check_columns_unequal(model, column_name, column_name2) %}

select * from {{ model }}
where {{ column_name }} = {{ column_name2 }}

{% endtest %}
중급 dbt

추가 매개변수 테스트 적용

  • 다른 테스트와 동일하게 정의
  • 테스트 상세 아래에 추가 인수 기재
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
중급 dbt

연습해 봅시다!

중급 dbt

Preparing Video For Download...