Địa chỉ:
Lầu 7 Tòa nhà STA, 618 đường 3/2, Phường Diên Hồng (Phường 14, Quận 10), TP HCM
Giờ làm việc
Thứ 2 tới thứ 6: 9:00 - 18:00
Địa chỉ:
Lầu 7 Tòa nhà STA, 618 đường 3/2, Phường Diên Hồng (Phường 14, Quận 10), TP HCM
Giờ làm việc
Thứ 2 tới thứ 6: 9:00 - 18:00
Khi bắt đầu làm quen với DAX trong Power BI, có một hàm mà bất kỳ nhà phân tích dữ liệu nào cũng phải sử dụng liên tục và được biết đến là vua của mọi hàm số trong DAX. Đó chính là hàm CALCULATE.Nếu bạn muốn xây dựng các báo cáo động, xử lý các điều kiện lọc phức tạp hay thực hiện các phép tính nâng cao, làm chủ hàm CALCULATE trong Power BI là bước đi bắt buộc.
Bài viết này, Starttrain sẽ giúp bạn hiểu sâu sắc về cú pháp, nguyên lý hoạt động và cách ứng dụng thực tế hàm CALCULATE thông qua các ví dụ trực quan từ một dự án phân tích đơn hàng thực tế.
Hàm CALCULATE trong Power BI là hàm duy nhất trong ngôn ngữ DAX có khả năng thay đổi, điều chỉnh hoặc ghi đè lên ngữ cảnh bộ lọc hiện tại của báo cáo để thực hiện một phép toán cụ thể.Thông thường, khi bạn kéo một giá trị vào biểu đồ, Power BI sẽ tự động tính toán dựa trên các bộ lọc có sẵn trên trang báo cáo (slicer, hàng, cột của bảng).
Tuy nhiên, nếu bạn muốn tính một chỉ số vượt ngoài các bộ lọc tự động đó (ví dụ: tính doanh thu nhưng chỉ áp dụng cho một nhóm sản phẩm nhất định, bất kể người dùng đang chọn slicer nào), bạn bắt buộc phải dùng CALCULATE.
Cú pháp chuẩn của hàm CALCULATE trong Power BI như sau:
CALCULATE(Expression, Filter1, Filter2, ...)
Trong đó:
Hàm CALCULATE được sử dụng trong các trường hợp chính sau:
Để thực sự nắm vững CALCULATE trong Power BI, bạn cần hiểu cơ chế vận hành bên dưới của nó qua 3 bước:
Đặc biệt, CALCULATE còn có khả năng Context Transition. Khi bạn chạy CALCULATE bên trong một môi trường có ngữ cảnh dòng, CALCULATE sẽ lấy toàn bộ giá trị của dòng hiện tại và biến chúng thành các bộ lọc để tính toán dữ liệu.
Để giúp bạn dễ hình dung cách thức hoạt động của hàm CALCULATE trong Power BI trong thực tế doanh nghiệp, chúng ta sẽ phân tích một ví dụ trực quan dựa trên hệ thống quản lý bán hàng như sau:
Để tính toán số lượng đơn hàng không có khuyến mãi, chúng ta sử dụng hàm CALCULATE kết hợp với DISTINCTCOUNT đơn hàng và lọc điều kiện cột PromotionID là trống (BLANK).
Công thức DAX chi tiết:
Total Orders without Promotions = CALCULATE(DISTINCTCOUNT(OrderHeader[OrderID]), OrderHeader[PromotionID] = BLANK())

Tương tự, để đếm các đơn hàng có chương trình khuyến mãi, chúng ta đổi điều kiện lọc thành khác rỗng (khác BLANK, ký hiệu là <>).
Công thức DAX chi tiết:
Total Orders with Promotions = CALCULATE(DISTINCTCOUNT(OrderHeader[OrderID]), OrderHeader[PromotionID] <> BLANK())

Cơ chế hoạt động tương tự công thức trên, nhưng bộ lọc lúc này chỉ chọn ra các đơn hàng mà cột PromotionID chứa một giá trị khuyến mãi cụ thể (khác rỗng).
Kết quả hiển thị trên Dashboard thực tế:
Khi chúng ta đưa hai chỉ số trên lên màn hình báo cáo bằng các thẻ trực quan (Card) và biểu đồ tròn (Donut Chart), kết quả thu được rất rõ ràng:
Biểu đồ tròn trực quan giúp ban giám đốc nhìn ngay ra được hiệu quả phủ sóng cực kỳ mạnh mẽ của các chiến dịch khuyến mãi mà doanh nghiệp đang triển khai.

Để xác định các đơn hàng thành công, chúng ta thực hiện phép đếm trên các dòng không bị đánh dấu trả hàng (Return Flag là trống).Công thức DAX chi tiết:
Total Successful Orders (none return items) = CALCULATE(DISTINCTCOUNT(OrderLine[OrderID]), OrderLine[Return Flag] = BLANK())

Ngược lại, để thống kê rủi ro từ việc trả hàng nhằm cải thiện chất lượng dịch vụ hoặc sản phẩm, chúng ta đếm các đơn hàng có chứa sản phẩm bị hoàn trả.Công thức DAX chi tiết:
Total Orders with Return Items = CALCULATE(DISTINCTCOUNT(OrderLine[OrderID]), OrderLine[Return Flag] <> BLANK())

Bộ lọc OrderLine[Return Flag] <> BLANK() lọc ra toàn bộ các dòng chi tiết đơn hàng có ghi nhận mã lỗi hoặc cờ hoàn trả (khác rỗng).
Kết quả hiển thị trên Dashboard thực tế:
Sau khi đưa hai chỉ số này vào một biểu đồ Donut Chart, có thể đánh giá ngay hiệu suất vận hành:
Thông tin này cung cấp một cảnh báo quan trọng cho bộ phận quản lý chuỗi cung ứng hoặc chăm sóc khách hàng để tìm hiểu nguyên nhân tại sao tỷ lệ trả hàng lại lên tới gần 30%.
Để tối ưu hóa sức mạnh của hàm CALCULATE trong Power BI, bạn thường sẽ phải kết hợp nó với một số hàm lọc đặc biệt khác. Dưới đây là những sự kết hợp kinh điển nhất:
Hàm ALL giúp xóa bỏ tất cả các bộ lọc đang có trên một bảng hoặc một cột. Khi kết hợp với CALCULATE, nó giúp bạn tính toán các giá trị tổng số để từ đó tính toán tỷ lệ phần trăm đóng góp.
Hàm FILTER được sử dụng khi bạn cần thực hiện các phép lọc phức tạp hơn (như lọc dựa trên kết quả của một Measure khác hoặc kết hợp nhiều điều kiện logic bằng các toán tử AND, OR).Ví dụ: Doanh Thu Khach Vip = CALCULATE(SUM(Sales[DoanhThu]), FILTER(KhachHang, [TongDoanhThuKhach] > 10000))
Trong Power BI, giữa hai bảng chỉ có thể tồn tại tối đa một liên kết hoạt động (Active Relationship). Nếu bạn có nhiều liên kết, bạn có thể dùng USERELATIONSHIP trong CALCULATE để tạm thời kích hoạt liên kết ẩn phục vụ cho phép tính của mình.
Ví dụ: Doanh Thu Theo Ngay Giao = CALCULATE(SUM(Sales[DoanhThu]), USERELATIONSHIP(Sales[NgayGiaoHang], Calendar[Date]))
Hàm CALCULATE trong Power BI không chỉ đơn thuần là một công cụ lọc điều kiện, mà còn đại diện cho tư duy thiết kế báo cáo động hiện đại. Bằng việc làm quen với cú pháp, thấu hiểu nguyên lý chuyển đổi ngữ cảnh và rèn luyện qua các ví dụ thực tế như đếm đơn hàng khuyến mãi hay thống kê tỷ lệ hoàn trả hàng ở trên, bạn sẽ nhanh chóng làm chủ ngôn ngữ DAX và tạo ra những báo cáo phân tích có giá trị thực tiễn cao cho doanh nghiệp của mình.

Starttrain Official

Starttrain Official

Starttrain Official

Starttrain Official
Vui lòng liên hệ qua những thông tin bên dưới. Starttrain sẽ phản hồi bạn trong thời gian sớm nhất.




