การสร้าง Singular Test

dbt ระดับกลาง

Mike Metzger

Data Engineer

Singular Test คืออะไร?

  • Custom data test
  • เขียนเป็น SQL query
    • ต้องคืนค่าแถวที่ไม่ผ่านการทดสอบ
  • กำหนดเป็นไฟล์ .sql ในไดเรกทอรี tests

ภาพการทดสอบ

1 Photo by Antoine Dautry on Unsplash
dbt ระดับกลาง

ตัวอย่าง Singular Test

  • สร้างการทดสอบเพื่อตรวจสอบ:
    • order_total >= subtotal
select *
from order
where order_total < subtotal
  • จำไว้ เราต้องการแถวที่ ไม่ผ่าน การทดสอบ — ถ้ามีแถวถูกคืนกลับมา แสดงว่าการทดสอบล้มเหลว
  • บันทึกไฟล์เป็น assert_order_total_gte_subtotal.sql

แผนภาพ schema ของตาราง order

dbt ระดับกลาง

Singular Test กับ Jinja

  • ใช้ Jinja ในการทดสอบได้
    • ฟังก์ชัน ref
    • อื่น ๆ ตามความเหมาะสม
  • dbt จะแทนที่ผลลัพธ์เมื่อรันการทดสอบ
    • รันโปรเจกต์ใหม่หาก dbt profile มีการเปลี่ยนแปลง
select *
from {{ ref('order') }}
where order_total < subtotal
dbt ระดับกลาง

การดีบักการทดสอบ

  • ใช้ SQL editor สร้าง query สำหรับทดสอบเบื้องต้น
  • วาง query ในไฟล์ที่เหมาะสม
  • ตั้งชื่อการทดสอบให้ไม่ซ้ำกัน
  • ใช้ตัวเลือก dbt test --select <testname>
  • ตรวจสอบข้อผิดพลาดและแก้ไขตามที่จำเป็น
dbt ระดับกลาง

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

dbt ระดับกลาง

Preparing Video For Download...