Phân biệt các ALL FUNCTIONS khi sử dụng DAX trong Power BI

Ngày đăng: 02/10/2022
Hôm nay chúng ta hãy cùng đi tìm sự khác nhau giữa các ALL FUNCTIONS rất phổ biến nhưng không hề “dễ nhai”, đó chính là ALL, ALLSELECTED và ALLEXCEPT.Đối với những người thường xuyên sử dụng Power BI hay cả với những người mới bắt đầu tiếp xúc, Data Analysis Expressions (DAX)  đã luôn luôn là một trong những tính năng nổi bật nhất trong quá trình phân tích số liệu, giúp cho các yêu cầu bài toán của người dùng được giải quyết dễ dàng hơn. Mặc dù là một ngôn ngữ công thức với những tên hàm dễ hiểu, nhưng việc có thể nắm bắt và hiểu rõ được hết các hàm của DAX là một điều không hề đơn giản, đặc biệt là với những bạn mới tiếp xúc với DAX. 

Giới thiệu chung về ALL Functions

Về cơ bản các ALL Functions đều thuộc kiểu filter functions, tức là các kiểu hàm cho phép người dùng được lọc các điều kiện và thay đổi context xoay quanh bài toán để phù hợp với yêu cầu. Bản thân các hàm này không được sử dụng một mình mà đóng vai trò là một hàm trung gian có thể được sử dụng để thay đổi tập hợp các kết quả mà một số tính toán khác thực hiện.Các hàm trên đặc biệt hữu ích khi chúng ta muốn tạo ra một measure tính kết quả theo từng nhóm giá trị của một trường dữ liệu, ví dụ như tính số ngày có đơn đặt hàng theo từng tháng, tổng doanh thu theo từng dòng sản phẩm,… hoặc chỉ đơn giản là chúng ta muốn tạo ra một measure tĩnh không bị ảnh hưởng bởi các điều kiện lọc khác trong dashboard. 

Phân biệt sự khác nhau của các ALL Functions qua tính toán tổng doanh thu sử dụng DAX trong Power BI

Bộ dữ liệu được sử dụng trong bài viết này được lấy từ Adventure Works DW 2020 Power BI Desktop Sample

Tính toán tổng doanh thu sử dụng ALL

ALL trả về tất cả các hàng trong bảng hoặc tất cả các giá trị trong một cột, bỏ qua bất kỳ bộ lọc nào có thể đã được áp dụng. Chức năng này hữu ích để xóa bộ lọc và tạo phép tính trên tất cả các hàng trong bảng.Trạng thái bình thường đối với các biểu thức DAX có chứa hàm ALL () là bất kỳ bộ lọc nào được áp dụng sẽ bị bỏ qua. Tuy nhiên, có một số trường hợp không đúng như vậy vì cơ chế auto-exist của DAX, DAX tối ưu hóa việc lọc để giảm số lượng xử lý cần thiết cho các truy vấn DAX nhất định. Một ví dụ trong đó auto-exist và ALL () cung cấp kết quả không mong muốn là khi lọc trên hai hoặc nhiều cột của cùng một bảng (như khi sử dụng slicer) và có một số đo trên cùng bảng đó sử dụng ALL (). Trong trường hợp này, tính năng tự động tồn tại sẽ hợp nhất nhiều bộ lọc thành một và sẽ chỉ lọc trên các kết hợp giá trị hiện có. Do sự hợp nhất này, số đo sẽ được tính toán trên các kết hợp giá trị hiện có và kết quả sẽ dựa trên các giá trị đã lọc thay vì tất cả các giá trị như mong đợi.

Ở đây chúng ta đều dễ dàng thấy dù chúng ta thay đổi các điều kiện lọc như thế nào thì cột measure SumSales_ALL cũng đều chỉ trả về một kết quả cho tất cả các category, vì chúng ta đã áp dụng hàm ALL cho cột category khi viết measure.

Tính toán tổng doanh thu sử dụng ALLSELECTED

ALLSELECTED loại bỏ các bộ lọc theo context khỏi các cột và hàng trong truy vấn hiện tại, trong khi vẫn giữ lại tất cả các bộ lọc theo context khác hoặc bộ lọc từ các slicer.Hàm này khác với ALL () vì nó giữ lại tất cả các bộ lọc được đặt rõ ràng trong truy vấn và nó giữ lại tất cả các bộ lọc ngữ cảnh ngoài bộ lọc hàng và cột. 

 Ở đây chúng ta viết thêm một measure nữa đó là SumSales_ALLSELECTED để so sánh với measure SumSales_ALL. Rất dễ nhận ra được sự khác nhau giữa 2 measure khi mà chúng ta thay đổi điều kiện lọc ở slicer thì measure SumSales_ALL vẫn giữ nguyên giá trị thì measure SunSales_ALLSELECTED đã bị thay đổi khi chúng ta bỏ đi category bikes, và chỉ còn tính tổng sales của 3 category còn lại.

Tính toán tổng doanh thu sử dụng ALLEXCEPT

ALLEXCEPT loại bỏ tất cả các bộ lọc ngữ cảnh trong bảng ngoại trừ các bộ lọc đã được áp dụng cho các cột được chỉ định.

Cuối cùng, hàm ALLEXCEPT được sử dụng trong measure SumSales_ALLEXCEPT. Giống như định nghĩa, hàm ALLEXCEPT chính là phần bù của hàm ALL khi ngoại trừ các cột được truyền vào trong hàm, thì nó sẽ loại bỏ hết các điều kiện lặp dành cho các cột và các bảng khác.

Tổng kết

Hiểu và áp dụng được các ALL Functions trong các trường hợp và bối cảnh khác nhau sẽ rất hữu ích và tiện lợi trong quá trình làm việc với Dax của bạn. Ba hàm đơn giản nhưng sẽ giúp bạn tiết kiệm rất nhiều thời gian tính toán các measures. Hãy lưu nhanh ba hàm này về cẩm nang kiến thức của mình để có thể áp dụng mọi lúc mọi nơi nhé! Với các bạn mới bắt đầu tìm hiểu Power BI & mong muốn ứng dụng Power BI trong công việc, hãy tham khảo khóa học PL-300: Microsoft Power BI Data Analyst từ Datapot.Được thiết kế và giảng dạy bởi các chuyên gia giàu kinh nghiệm làm việc và đào tạo trong ngành dữ liệu, được triển khai tại các doanh nghiệp như Unilever, SHB, MB Life Ageas,.., khóa học sẽ mang đến cho bạn những kiến thức và kỹ năng thực tiễn nhất.ĐĂNG KÝ NGAY
-8%
khóa học power bi datapot
 Fresher, Junior
4.800.000  – 5.200.000 
 21 giờ học
 Intermediate/Advanced
7.500.000 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *