Kiểm thử dữ liệu (tests) trong dbt: chặn số sai từ gốc
Câu hỏi đắt giá nhất trong phân tích: “Số này có đúng không?”. dbt trả lời bằng kiểm thử dữ liệu — bạn khai báo kỳ vọng về dữ liệu, dbt chạy kiểm tra mỗi lần build và báo đỏ ngay khi có gì sai. Số sai bị chặn trước khi kịp chạy tới dashboard.
Generic tests — khai báo trong YAML
Phần tiêu đề “Generic tests — khai báo trong YAML”Bốn kiểm thử có sẵn, phủ phần lớn nhu cầu. Khai báo trong file .yml cạnh model:
models: - name: stg_don_hang columns: - name: don_hang_id tests: - unique # không trùng - not_null # không rỗng - name: trang_thai tests: - accepted_values: values: ['moi', 'da_thanh_toan', 'da_huy'] - name: khach_hang_id tests: - relationships: # khóa ngoại hợp lệ to: ref('stg_khach_hang') field: khach_hang_id| Test | Đảm bảo |
|---|---|
unique | Cột không có giá trị trùng (vd khóa chính) |
not_null | Cột không rỗng |
accepted_values | Giá trị nằm trong tập cho phép |
relationships | Mọi khóa ngoại đều khớp bảng cha (toàn vẹn tham chiếu) |
Singular tests — kiểm thử bằng SQL tùy biến
Phần tiêu đề “Singular tests — kiểm thử bằng SQL tùy biến”Quy tắc phức tạp hơn? Viết một câu SQL trong tests/ trả về các dòng SAI. Test đạt khi truy vấn trả về 0 dòng:
-- tests/khong_co_doanh_thu_am.sqlselect don_hang_id, gia_trifrom {{ ref('mart_doanh_thu') }}where gia_tri < 0Nếu có đơn doanh thu âm, test trả về dòng đó → fail. Logic kiểm tra đọc như tiếng người.
Chạy & ngưỡng cảnh báo
Phần tiêu đề “Chạy & ngưỡng cảnh báo”dbt testchạy mọi test;dbt buildchạy model và test theo đúng DAG.- Đặt mức độ:
severity: warn(chỉ cảnh báo) hayerror(dừng pipeline). Cho phép ngưỡng: chỉ fail khi quá N dòng sai.
tests: - not_null: config: severity: warnMở rộng với package
Phần tiêu đề “Mở rộng với package”Cài dbt_expectations để có hàng chục test sẵn (kiểu giá trị, khoảng số, định dạng ngày, độ lệch phân phối…) — lấy cảm hứng từ Great Expectations, rất hợp khi cần kiểm soát chất lượng chặt.
Đọc tiếp
Phần tiêu đề “Đọc tiếp” Tài liệu & lineage Sinh tài liệu và sơ đồ phụ thuộc từ chính code + test.
Snapshots & Seeds Lưu lịch sử thay đổi (SCD2) và nạp bảng danh mục.