Phân biệt hàm FILTER và FILTERS

DAX: Phân biệt hàm FILTER và FILTERS

Ngày đăng: 16/08/2023

Trong Power BI, chúng ta hay phải thực hiện tính toán kết hợp nhiều điều kiện filter với nhau. Vì thế FILTER là hàm DAX được sử dụng khá phổ biến trong Power BI. Nó thường được sử dụng kết hợp với hàm CALCULATE để thay đổi filter context và tính toán dựa trên context đó. Ngoài ra, Power BI còn có một hàm nữa có tên khá giống FILTER nhưng chức năng thì lại hoàn toàn khác, đó là hàm FILTERS. Trong bài viết ngày hôm nay, chúng ta sẽ đi sâu vào hai hàm này cũng như là cách phân biệt chúng. 

Tổng quan về hàm FILTER và FILTERS

Hàm FILTER: 

Mục đích: Hàm FILTER trong Power BI được sử dụng để lọc dữ liệu từ một bảng dựa trên các điều kiện đã được chỉ định. 

Cú pháp: FILTER(<table>, <filter_expression>) 

Trong đó: 

Table: Là bảng data gốc dùng để lọc. 

filter_expression: Các điều kiện lọc liên quan tới bảng data gốc. 

Ví dụ: FILTER(Sales, Sales[Amount] > 1000) 

Hàm FILTER trả về một bảng mới chứa các hàng hoặc giá trị từ bảng gốc thỏa mãn các điều kiện lọc được xác định. Vì trả về một bảng mới nên ta cũng có thể sử dụng hàm này để tạo Calculated table. 

Cách tạo và ví dụ: 

Vào tab “Home” => Chọn “New table” => Dùng hàm FILTER để lọc bảng mình muốn với điều kiện cụ thể. 

Ví dụ ta có bảng Internet Sales có các cột (hình bên dưới), ta cần tạo bảng mới giống bảng Internet Sales nhưng chỉ chứa các đơn hàng của sản phẩm có ProductCode=477. Hàm DAX sẽ có dạng: 

TABLE GỐC CALCUALTED TABLE DÙNG HÀM FILTER ĐỂ TẠO 
 A screenshot of a computer

Description automatically generated

Hàm FILTERS: 

Mục đích: Hàm FILTERS trong Power BI được sử dụng để lấy danh sách các giá trị duy nhất từ một cột sau khi đã áp dụng bộ lọc từ chính cột đó.

Cú pháp: FILTERS(<column>) 

Trong đó: 

Column: Là tên cột mà chúng ta cần lấy danh sách giá trị duy nhất. 

Ví dụ: FILTERS(Sales[Product Category]) 

Đặc điểm: Hàm FILTERS trả về một danh sách các giá trị duy nhất từ cột được chỉ định sau khi đã áp dụng các bộ lọc từ chính cột đó trong báo cáo. Cũng giống ví dụ ở trên về FILTER, ta có thể tạo Calculated Table bằng hàm FILTERS. 

Ví dụ, ta có bảng Internet Sales có các cột (hình bên dưới), ta cần tạo bảng mới chứa danh sách Unique các ProductCode. Hàm DAX sẽ có dạng: 

TABLE GỐC CALCUALTED TABLE DÙNG HÀM FILTERS ĐỂ TẠO 
  

Phân biệt hai hàm FILTER VÀ FILTERS

Giống nhau:  

2 hàm này có điểm giống nhau đó là đều trả về giá trị là một table. 

Khác nhau: 

 FILTER FILTERS 
Nhóm hàm Filter functions Các hàm DAX trong nhóm này cho phép bạn thay đổi ngữ cảnh của dữ liệu để tạo ra các phép tính toán linh hoạt. Table manipulation functions Các nhóm hàm này trả về một bảng hoặc thao tác với các bảng dữ liệu hiện có. 
Syntax FILTER(<table>,<filter>)   FILTERS(<columnName>)   
Mục đích sử dụng chính Thay đổi context tính toán. Lấy ra danh sách giá trị duy nhất trong một điều kiện lọc cụ thể. 
Tần suất sử dụng Thường xuyên được sử dụng trong Power BI. Sử dụng ít, tùy vào từng nhu cầu thì có thể có các nhóm hàm khác thay thế được. 
Usecase thường dùng Thường được sử dụng kết hợp với hàm CALCULATE để tạo ra các phép tính toán chỉ số linh hoạt hoặc theo một điều kiện cụ thể. Có thể kết hợp với các hàm iterator function để tính toán chỉ tiêu trong một phạm vi nhỏ hơn. Đếm số giá trị của cột đang được filter. 

USECASE CỤ THỂ: 

FILTER: 

Mô tả bộ dữ liệu: 

Chúng ta có bảng dữ liệu bán hàng tên là Internet Sales bao gồm 3 cột thông tin: Orderdate, ProductCode và SaleAmount. 

Đề bài: 

Chúng ta cần tính tổng revenue của các sản phẩm có ProductCode= 477. 

Cách xử lý: 

Chúng ta sẽ kết hợp với hàm CALCULATE để lồng điều kiện FILTER và trong hàm tính tổng Sale Amount. 

Chi tiết hàm DAX: 

Kết quả sẽ có dạng: 

FILTERS: 

Mô tả bộ dữ liệu: 

Dùng chung bộ dữ liệu với Usecase ở trên. 

Đề bài: 

Doanh nghiệp đang có x sản phẩm bán trên thị trường. Tùy từng năm, sẽ có những sản phẩm bán được và sản phẩm không có doanh thu nào. Doanh nghiệp muốn xem xét doanh thu trung bình trên tất cả các sản phẩm và doanh thu trung bình trên những sản phẩm bán được năm đó thôi (Qua usecase này chúng ta cũng nhận biết được sự khác nhau giữa FILTERS và VALUES). 

Cách xử lý: 

Sử dụng hàm FILTERS để trả ra danh sách các sản phẩm nhưng không để bị ảnh hưởng bởi bộ lọc YEAR. Kết hợp với hàm SUM (Tính tổng doanh thu) và COUNTROWS (Đếm số sản phẩm), ta sẽ tính được doanh thu trung bình/sản phẩm. 

Chi tiết hàm DAX: 

Sử dụng FILTERS để lấy danh sách sản phẩm 

Sử dụng VALUES để lấy danh sách sản phẩm 

Output ta đạt được sẽ như sau: 

  • Nếu ta dùng Slicer “ProductCode thì số của 2 measure trên sẽ giống nhau, do hàm FILTERS và hàm VALUES đều bị ảnh hưởng bởi bộ lọc ProductCode (Chỉ bị ảnh hưởng bởi bộ lọc được chỉ định trong hàm, cụ thể ở đây là bộ lọc liên quan đến cột ProductCode).
  • Nhưng nếu ta sử dụng Slicer “YEAR”, thì lúc này số của 2 mearsure đã khác nhau. Nguyên nhân là do hàm VALUES trả ra danh sách các sản phẩm có phát sinh doanh số trong năm đó. Còn hàm FILTERS không bị ảnh hưởng và trả ra danh  sách tất cả sản phẩm. 

Kết luận: 

Trong bài viết này, chúng ta đã thảo luận về sự khác biệt giữa hai hàm DAX có tên khá giống nhau trong Power BI là “FILTER” và “FILTERS”. Thường chúng ta sẽ hay áp dụng hàm FILTER để tạo ra các measure tính toán thay đổi linh hoạt theo từng context hoặc filter theo điều kiện cụ thể. Để dễ phân biệt giữa hàm FILTER và FILTERS, chúng ta chỉ cần ghi nhớ rằng hàm FILTER hay dùng hơn và dùng để thay đổi ngữ cảnh tính toán, còn hàm FILTERS ít dùng và dùng để trả ra danh sách giá trị duy nhất của một cột cụ thể.

Đọc thêm về Hàm CALCULATE trong Power BI

Chia sẻ bài viết này

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 *