Như chúng ta đã biết, các nhóm hàm DAX rất đa dạng, từ những hàm tính toán cơ bản đến những hàm phân tích giá trị theo thời gian. Hôm nay, chúng ta sẽ cùng tìm hiểu một nhóm hàm được sử dụng khá phổ biến là nhóm hàm Information.
Mục lục
Tổng quan Information Functions
Về cách hoạt động của nhóm hàm này, khi được cung cấp một ô hoặc một dòng làm đối số, nhóm hàm Information sẽ kiểm tra ô hoặc dòng đó và thông báo cho chúng ta về tính tương thích của giá trị.
Ví dụ: hàm ISBLANK trả về TRUE nếu giá trị/cột mà bạn tham chiếu chứa dữ liệu trống.
Danh sách các hàm Information bao gồm:
Tên hàm | Mô tả |
CONTAINS | Trả về TRUE nếu các giá trị trong cột là đối số tồn tại hoặc được chứa trong các cột đó; nếu không thì trả về FALSE. |
CONTAINSROW | Trả về TRUE nếu một hàng giá trị tồn tại hoặc có trong bảng, nếu không thì trả về FALSE. |
CONTAINSSTRING | Trả về TRUE hoặc FALSE cho biết liệu một chuỗi có chứa chuỗi khác hay không. |
CONTAINSSTRINGEXACT | Trả về TRUE hoặc FALSE cho biết liệu một chuỗi có khớp chính xác với chuỗi khác hay không. |
CUSTOMDATA | Trả về nội dung của thuộc tính CustomData trong chuỗi kết nối. |
HASONEFILTER | Trả về TRUE khi số lượng giá trị được lọc trực tiếp trên tên cột là một; mặt khác trả về FALSE. |
HASONEVALUE | Trả về TRUE khi ngữ cảnh cho tên cột đã được lọc xuống chỉ một giá trị riêng biệt, ngược lại là FALSE. |
ISBLANK | Kiểm tra xem một giá trị có trống không và trả về TRUE hoặc FALSE. |
ISCROSSFILTERED | Trả về TRUE khi tên cột hoặc cột khác trong cùng một bảng hoặc bảng có liên quan đang được lọc. |
ISEMPTY | Kiểm tra xem một bảng có trống không. |
ISERROR | Kiểm tra xem một giá trị có phải là lỗi hay không và trả về TRUE hoặc FALSE.. |
ISEVEN | Trả về TRUE nếu số chẵn, hoặc FALSE nếu số lẻ. |
ISFILTERED | Trả về TRUE khi tên cột đang được lọc trực tiếp. |
ISINSCOPE | Trả về giá trị TRUE nếu cột được chỉ định làm đối số là cấp độ đang được xem xét trong hệ thống phân cấp. |
ISLOGICAL | Kiểm tra xem một giá trị có phải là giá trị logic (TRUE hoặc FALSE) và trả về TRUE hoặc FALSE. |
ISNONTEXT | Kiểm tra xem một giá trị có phải là văn bản không (các ô trống không phải là văn bản) và trả về TRUE hoặc FALSE. |
ISNUMBER | Kiểm tra xem một giá trị có phải là số hay không và trả về TRUE hoặc FALSE. |
ISODD | Trả về TRUE nếu số lẻ, hoặc FALSE nếu số chẵn. |
ISONORAFTER | Là một hàm Boolean Context, mô phỏng hành vi của mệnh đề Start At và trả về TRUE cho một hàng đáp ứng tất cả các tham số điều kiện. |
ISSELECTEDMEASURE | Xác định số đo trong ngữ cảnh là một trong những số đo được chỉ định trong danh sách đó. |
ISTEXT | Kiểm tra xem một giá trị có phải là văn bản hay không và trả về TRUE hoặc FALSE.. |
SELECTEDMEASURE | Được sử dụng bởi các biểu thức cho các mục tính toán để tham chiếu thước đo trong ngữ cảnh. |
SELECTEDMEASUREFORMATSTRING | Được sử dụng bởi các biểu thức cho các mục tính toán để truy xuất chuỗi định dạng của thước đo trong ngữ cảnh. |
SELECTEDMEASURENAME | Được sử dụng bởi các biểu thức cho các mục tính toán để xác định số đo trong ngữ cảnh theo tên. |
USERNAME | Trả về tên miền và tên người dùng từ thông tin đăng nhập được cung cấp cho hệ thống tại thời điểm kết nối. |
USEROBJECTID | Trả về ID đối tượng hoặc SID của người dùng hiện tại. |
USERPRINCIPALNAME | Trả về tên chính của người dùng. |
Một số hàm phổ biến trong Information Functions
1. ISFILTERED
Hàm ISFILTERED trả về giá trị TRUE khi tên cột đang được lọc trực tiếp. Nếu không có bộ lọc nào trên cột hoặc nếu quá trình lọc xảy ra ở một cột khác trong cùng một bảng hoặc trong một bảng có liên quan đang được lọc thì hàm sẽ trả về FALSE.
Syntax:
ISFILTERED(<columnName>)
Ví dụ:
Đề bài: Tạo tiêu đề động có thể thay đổi khi áp dụng bộ lọc theo tên theo khu vực.
Kết quả:
– Khi chưa áp dụng bộ lọc, tiêu đề là: All Region

– Sau khi áp dụng bộ lọc Region cho Australia, France, tiêu đề thay đổi thành Sales in France, Australia Region

Cách làm:
– Bước 1: Tạo measure bằng hàm ISFILTERED để trả về dữ liệu khi bộ lọc được áp dụng trên trường Region. Nếu bạn muốn áp dụng nhiều bộ lọc vùng thì hãy sử dụng Concatenatex với chức năng giá trị như bên dưới.
– Bước 2: Sử dụng Measure vừa tạo và chọn loại visualize Card để tạo tiêu đề cho report.

– Bước 3: Tạo table thể hiện Revenue theo từng Region theo hình và bộ lọc để chọn Region.

– Bước 4: Thao tác chọn 1 hay nhiều Region để thấy sự thay đổi của tiêu đề.
2. HASONEVALUE
Hàm HASONEVALUE trả về TRUE khi chỉ một giá trị duy nhất được lọc trong cột được chỉ định, ngược lại là FALSE.
Syntax:
HASONEVALUE(<columnName>)
Ví dụ:
Đề bài: Giả sử bạn có nhu cầu muốn xem Top 3, 5, 10 sản phẩm có doanh số cao nhất và bạn muốn tạo ra một slicer có thể linh hoạt các tùy chọn này. Ví dụ, bạn chọn Top 3 thì dữ liệu sẽ xuất hiện 3 sản phẩm có doanh thu cao nhất, chọn Top 5 thì sẽ thay đổi thành 5 sản phẩm có doanh thu cao nhất…

Cách làm:
– Bước 1: Tạo 1 bảng dữ liệu, đặt tên là Rank Table
Vào Home \ Enter Data, gõ các giá trị 3,5,10 như bảng bên dưới

– Bước 2: Tạo measure dựa trên cột Rank đã tạo ở bảng trên
Ý nghĩa của measure này là khi chỉ có một giá trị Rank được chọn, sẽ trả về giá duy nhất tương ứng, còn lại nếu không chọn thì sẽ có 15 sản phẩm được thể hiện.
– Bước 3: Tạo measure trả về một bảng có danh sách sản phẩm được chỉ định dựa trên thứ tự giản dần của doanh số
– Bước 4: Tạo slicer thể hiện Top Ranking (lấy từ cột Rank trong bảng Rank Table) và tạo bảng Product by Sales như yêu cầu. Lúc này, bạn có thể tùy chỉnh slicer theo tùy chọn Top 3, 5, 10.

3. ISINSCOPE
Hàm ISINSCOPE trả về giá trị TRUE nếu cột được chỉ định làm đối số là cấp độ đang được xem xét trong hệ thống phân cấp.
Syntax:
ISINSCOPE(<columnName>)
Ví dụ:
Tính phần trăm doanh số theo từng category và sub-category (đặt tên là PCT over parent) như bảng bên dưới.

Cách làm:
– Bước 1: Tính tổng doanh số trên toàn bộ Sub-category (đặt tên là All_Revenue)
– Bước 2: Tính doanh số trên toàn bộ Category (đặt tên là Category_Revenue)
– Bước 3: Tính Pct over parent:
- Nếu đối số đang xét là Sub-category: Pct over parent=Revenue/Category_Revenue
- Nếu đối số đang xét là Category: Pct over parent=Revenue/All_Revenue
Ta có thể viết gộp các bước trên thành 1 công thức như sau:
KẾT LUẬN
Information Functions là một trong những nhóm hàm DAX thường được sử dụng nhất trong Power BI. Trên đây Datapot đã giới thiệu với các bạn một số hàm thông dụng nhất trong nhóm hàm này cùng với một số ví dụ minh họa. Hy vọng sẽ giúp ích cho các bạn trong các ứng dụng thực tế.