DAX cơ bản trong Power BI: 12 công thức đo lường KPI sản xuất, chất lượng
Nội dung bài viết 7 mục
Tóm tắt nhanh
- DAX (Data Analysis Expressions) là ngôn ngữ công thức của Power BI, Power Pivot và Analysis Services.
- Ưu tiên Measure (tính theo bộ lọc khi xem) hơn Calculated Column (tính sẵn từng dòng).
- Hàm quan trọng nhất: CALCULATE — thay đổi bộ lọc khi tính.
- Luôn dùng DIVIDE thay phép chia để tránh lỗi chia 0.
DAX là gì?
DAX là ngôn ngữ công thức giống Excel nhưng làm việc trên bảng và cột thay vì ô. Một measure DAX viết một lần có thể hiển thị đúng ở mọi góc nhìn: theo tháng, theo dây chuyền, theo khách hàng — vì nó tự tính lại theo ngữ cảnh lọc (filter context).
Measure hay Calculated Column?
| Measure | Calculated Column | |
|---|---|---|
| Tính khi nào | Khi hiển thị, theo bộ lọc | Khi làm mới dữ liệu, từng dòng |
| Dùng cho | Tổng, tỉ lệ, KPI | Phân loại, nhóm, khoá phụ |
| Bộ nhớ | Không tốn | Tốn thêm cột |
| Ví dụ | Tỉ lệ lỗi % | Nhóm ca (Ngày/Đêm) |
12 công thức KPI thường dùng
Giả sử có bảng Fact_KiemTra[SoKiem], [SoLoi] và bảng sản xuất Fact_SX.
| # | Measure | Công thức DAX | Ý nghĩa |
|---|---|---|---|
| 1 | Tổng kiểm | SUM( Fact_KiemTra[SoKiem] ) | Tổng số sản phẩm đã kiểm |
| 2 | Tổng lỗi | SUM( Fact_KiemTra[SoLoi] ) | Tổng số sản phẩm lỗi |
| 3 | Tỉ lệ lỗi % | DIVIDE( [Tổng lỗi], [Tổng kiểm] ) | Định dạng %, an toàn khi mẫu số = 0 |
| 4 | PPM | DIVIDE( [Tổng lỗi], [Tổng kiểm] ) * 1000000 | Số lỗi trên một triệu sản phẩm |
| 5 | Lỗi ngoại quan | CALCULATE( [Tổng lỗi], Dim_Loi[NhomLoi] = "Ngoại quan" ) | Chỉ lấy nhóm lỗi ngoại quan |
| 6 | Lũy kế năm | TOTALYTD( [Tổng lỗi], Dim_Ngay[Ngay] ) | Cộng dồn từ đầu năm |
| 7 | Cùng kỳ năm trước | CALCULATE( [Tỉ lệ lỗi %], SAMEPERIODLASTYEAR( Dim_Ngay[Ngay] ) ) | Cùng kỳ năm trước |
| 8 | Chênh lệch cùng kỳ | [Tỉ lệ lỗi %] - [Cùng kỳ năm trước] | Âm = cải thiện |
| 9 | Tháng trước | CALCULATE( [Tỉ lệ lỗi %], DATEADD( Dim_Ngay[Ngay], -1, MONTH ) ) | So với tháng liền trước |
| 10 | Tỉ trọng lỗi | DIVIDE( [Tổng lỗi], CALCULATE( [Tổng lỗi], ALL( Dim_Loi ) ) ) | Dùng cho biểu đồ Pareto |
| 11 | Đạt mục tiêu | IF( [Tỉ lệ lỗi %] <= 0.02, "Đạt", "Không đạt" ) | Tô màu thẻ KPI |
| 12 | OEE | [Availability] * [Performance] * [Quality] | Hiệu suất thiết bị tổng thể |
Công thức OEE và các thành phần xem thêm tại bài OEE.
CALCULATE – trái tim của DAX
CALCULATE(biểu thức, bộ lọc1, bộ lọc2…) tính biểu thức trong một ngữ cảnh lọc mới. Ví dụ “Lỗi ngoại quan” ở trên: dù người xem chọn tháng nào, công thức vẫn chỉ lấy nhóm lỗi Ngoại quan. Kết hợp với ALL (bỏ lọc), FILTER, hàm thời gian (time intelligence) là đủ cho 90% nhu cầu báo cáo nhà máy.
Ngữ cảnh dòng và ngữ cảnh lọc
- Ngữ cảnh lọc: những gì đang được chọn trên báo cáo (slicer, trục biểu đồ).
- Ngữ cảnh dòng: dòng hiện tại khi lặp qua bảng (trong calculated column hoặc hàm SUMX, FILTER).
Hiểu hai khái niệm này là chìa khoá để không bị “số ra kỳ lạ”.
Lỗi hay gặp
- Dùng phép
/→ lỗi khi mẫu số bằng 0; dùngDIVIDE. - Lấy trung bình của tỉ lệ (average of %) thay vì tỉ lệ của tổng → sai khi các nhóm có cỡ mẫu khác nhau.
- Hàm thời gian không chạy vì thiếu bảng lịch đánh dấu Date Table (xem Star Schema).
Cần người làm giúp?
Industrial Knowledge xây bộ measure KPI chuẩn cho chất lượng, OEE, bảo trì, giao hàng. Đặt dịch vụ.