Cách xử lý lỗi True/False expression khi dùng hàm CALCULATE ()
Chào các bạn, trước đây dataMAKER đã hướng dẫn một bạn về cách xử lý lỗi trên. Hôm nay, sẵn dịp Power BI update thêm cho hàm CALCULATE() nên dataMAKER sẽ đưa vào để làm rõ hơn về cách xử lý này.
Question:
Mình có bảng Bán hàng, mình muốn tính Tổng Doanh Thu nhưng chỉ áp dụng cho những đơn hàng nào có Chi phí lớn hơn mức Trung bình phí theo từng Khu vực.
Mình thực hiện hàm CALCULATE() theo hướng dẫn nhưng xuất hiện lỗi như sau:
Nhờ bạn hỗ trợ giúp, chân thành cảm ơn.
Answer:
Thoạt nhìn lỗi trên, bạn có thể nghĩ vấn đề ở chỗ hàm AVERAGE().
Thực ra, vấn đề ở chỗ hàm CALCULATE() không cho phép bạn khai báo điều kiện lọc như vậy. Như vậy sai là ở cú pháp lệnh chứ không phải do hàm AVERAGE() như dự đoán ở trên.
Có nhiều cách để xử lý vấn đề này, dataMAKER sẽ mô tả một vài cách xử lý như sau:
Cách 1: điều chỉnh lại cho đúng cú pháp hàm cần thực hiện bằng cách đưa 1 ‘table filter’ vào như sau:
CALCULATE wFilter = CALCULATE( [Tổng Doanh Thu], FILTER(dataMAKER, dataMAKER[Chi phí] > AVERAGE(dataMAKER[Chi phí]) ) )
Cách 2: dùng VAR
Đây là cách rất tốt – dataMAKER luôn khuyến khích các bạn dùng VAR khi viết hàm, đặc biệt hàm có nhiều chỉ số, giá trị cần sử dụng tính toán. Tuy nhiên, bạn phải thực sự hiểu cách dùng VAR để tránh việc kết quả hay bị sai khi dùng VAR sai.
CALCULATE wVAR = var avg = AVERAGE(dataMAKER[Chi phí]) return CALCULATE([Tổng Doanh Thu], dataMAKER[Chi phí] > avg)
Cách 3: Cập nhật lên Power BI tháng 9 và sử dụng lại cú pháp ban đầu.
CALCULATE wFIX = CALCULATE( [Tổng Doanh Thu], dataMAKER[Chi phí] > AVERAGE(dataMAKER[Chi phí]) )
Kết quả sẽ không xuất hiện lỗi nữa 😀
Như bạn thấy, cải tiến mới được cập nhật trong bản Power BI tháng 9 này cho phép chúng ta linh động hơn trong việc khai báo hàm. Cải tiến này áp dụng cho cả CALCULATE() và CALCULATETABLE(). Điểm cộng nữa là hoàn toàn không ảnh hưởng đến hiệu suất thực thi của hàm.
Các bạn có thể tham khảo thêm những tính năng mới trong bản cập nhật Power BI tháng 9 này tại đây.
Have fun,