การทดสอบใน dbt เบื้องต้น

dbt ระดับกลาง

Mike Metzger

Data Engineer

การทดสอบคืออะไร?

  • การตรวจสอบ / ยืนยัน dbt objects
    • Models
    • Sources และ seeds
  • ใช้ตรวจสอบว่าข้อมูลเป็นไปตามที่คาดหวัง
    • ค่า Null
    • ค่าที่อยู่ในช่วงที่กำหนด
    • ความสัมพันธ์ระหว่างข้อมูล
    • การทดสอบแบบกำหนดเอง (จะกล่าวถึงในภายหลัง)
dbt ระดับกลาง

ประเภทของการทดสอบ

dbt มีการทดสอบ 3 ประเภท

  1. Built-in (4 แบบที่กำหนดไว้ล่วงหน้า)
  2. Singular*
  3. Generic*

$$

  • จะกล่าวถึงในภายหลัง
dbt ระดับกลาง

Built-in tests

  • 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
  • ตรวจสอบว่าผลลัพธ์ผ่านการทดสอบ
  • หากล้มเหลว ให้ตรวจสอบ compiled SQL

ผลลัพธ์การทดสอบที่ล้มเหลวของ dbt

dbt ระดับกลาง

การค้นหาข้อผิดพลาด

  1. ต้องค้นหา compiled SQL code
  2. ในไดเรกทอรี target/compiled/projectname/models/model_properties.yml
    • target/compiled/nyc_yellow_taxi/models/model_properties.yml/
  3. ค้นหาไฟล์ .sql ที่ตรงกับการทดสอบที่ล้มเหลว
  4. คัดลอกเนื้อหาไปรันใน database client เพื่อตรวจสอบปัญหา
  5. แก้ไขข้อมูล แล้วรัน dbt run / dbt test ใหม่
dbt ระดับกลาง

มาฝึกกันเถอะ!

dbt ระดับกลาง

Preparing Video For Download...