Tạo các bài kiểm thử tùy chỉnh có thể tái sử dụng

dbt trung cấp

Mike Metzger

Data Engineer

Kiểm thử có thể tái sử dụng là gì?

  • Kiểm thử có thể dùng lại trong nhiều tình huống
  • Tương tự kiểm thử tích hợp của dbt, nhưng kiểm tra được bất kỳ điều kiện nào
  • Dùng Jinja templating
  • Lưu dưới dạng tệp .sql trong thư mục dự án tests/generic
  • Phải thêm kiểm thử vào model_properties.yml cho từng model sử dụng

Có thể tái sử dụng

1 Ảnh: Sigmund trên Unsplash
dbt trung cấp

Tạo kiểm thử có thể tái sử dụng

{% test check_gt_0(model, column_name) %}

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

{% endtest %}
  1. Dòng đầu (ít nhất): {% test testname(model, column_name) %}
  2. Thêm truy vấn SQL, với phần thay thế {{ object }}
  3. Kết thúc tệp bằng {% endtest %}
dbt trung cấp

Áp dụng kiểm thử tái sử dụng cho model

  • Thêm vào model_properties.yml
  • Định nghĩa các đối tượng cần thiết
  • Giá trị models: name là đối số model
  • Giá trị columns: name là đối số 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 trung cấp

Tham số bổ sung

  • Có thể thêm tham số bổ sung vào kiểm thử
  • Tương tự accepted_valuesrelationships
  • Thêm làm đối số trong header Jinja
{% test check_columns_unequal(model, column_name, column_name2) %}

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

{% endtest %}
dbt trung cấp

Áp dụng kiểm thử có tham số bổ sung

  • Định nghĩa như các kiểm thử khác
  • Thêm đối số bổ sung dưới phần chi tiết kiểm thử
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
dbt trung cấp

Ayo berlatih!

dbt trung cấp

Preparing Video For Download...