Trong Power BI có một hàm DAX được sử dụng rất phổ biến và giúp cú pháp trở nên ngắn gọn và dễ hiểu – đó chính là Hàm CALCULATE và CALCULATETABLE. Cùng UniTrain đọc qua bài viết dưới đây để biết cách sử dụng hai hàm này nhé.

1/CALCULATE

Miêu tả

Hàm CALCULATE trả về kết quả được tính toán lại từ 1 biểu thức khi kết hợp thêm các bộ lọc.

Mục đích: Tính toán theo nhiều điều kiện hơn so với 1 biểu thức tính ban đầu.

Cú pháp

CALCULATE( <biểu thức tính> [, <bộ lọc>]   [, <bộ lọc>] …)

Có thể viết theo nhiều điều kiện lọc khác nhau, mỗi điều kiện là 1 tham số bộ lọc nối tiếp nhau, ngăn cách bởi dấu phẩy

Tham số

<biểu thức tính> : biểu thức ban đầu mà bạn muốn tính toán lại

<bộ lọc> : điều kiện lọc, điều kiện để tính toán lại biểu thức

Biểu thức được sử dụng làm tham số đầu tiên về cơ bản giống như một số đo.

Bộ lọc có thể là:

– Biểu thức bộ lọc Boolean

– Biểu thức bộ lọc bảng

– Chức năng sửa đổi bộ lọc

Khi có nhiều bộ lọc, chúng có thể được đánh giá bằng cách sử dụng toán tử logic AND (&&) , nghĩa là tất cả các điều kiện phải là TRUE hoặc bằng toán tử logic OR (||), nghĩa là một trong hai điều kiện có thể đúng.

Giá trị trả về

Là kết quả sau khi đã tính toán lại của biểu thức.

Nhận xét

– Khi biểu thức bộ lọc được cung cấp, hàm CALCULATE sửa đổi ngữ cảnh bộ lọc để đánh giá biểu thức. Đối với mỗi biểu thức bộ lọc, có thể có hai kết quả tiêu chuẩn khi biểu thức bộ lọc không được bao bọc trong hàm KEEPFILTERS:

+ Nếu các cột (hoặc bảng) không có trong ngữ cảnh bộ lọc, thì các bộ lọc mới sẽ được thêm vào ngữ cảnh bộ lọc để đánh giá biểu thức.

+ Nếu các cột (hoặc bảng) đã có trong ngữ cảnh bộ lọc, các bộ lọc hiện có sẽ bị bộ lọc mới ghi đè để đánh giá biểu thức CALCULATE.

– Hàm CALCULATE được sử dụng mà không có bộ lọcđạt được một yêu cầu cụ thể, được yêu cầu khi một biểu thức (không phải là thước đo mô hình) tóm tắt dữ liệu mô hình cần được đánh giá trong ngữ cảnh hàng. Tình huống này có thể xảy ra trong một công thức cột được tính toán hoặc khi một biểu thức trong một hàm lặp được đánh giá. Lưu ý rằng khi một thước đo mô hình được sử dụng trong ngữ cảnh hàng, quá trình chuyển đổi ngữ cảnh là tự động.

– Chức năng này không được hỗ trợ để sử dụng trong chế độ DirectQuery khi được sử dụng trong các cột được tính toán hoặc các quy tắc bảo mật cấp hàng (RLS).

Ví dụ

Công thức sau đây tính tổng số tiền bán được trong cột Results của bảng Sales, theo điều kiện là năm ở cột Year là năm 2019

=CALCULATE( SUM(Sales[Results]) , Sales[Year] = 2019)

SUM(Sales[Results]) là tổng các giá trị trong cột Results của bảng Sales

Sales[Year] = 2019 là tính theo điều kiện các giá trị trong cột Year của bảng Sales bằng 2019

(với điều kiện là giá trị Text thì phải đặt trong cặp dấu nháy kép, còn giá trị Number thì viết trực tiếp không cần đặt trong cặp dấu nháy kép)

2/CALCULATEABLE

Miêu tả

Hàm CALCULATETABLE giúp tạo ra 1 bảng tính mới từ 1 bảng tính gốc trong đó đã được lọc theo những tiêu chí nhất định.

Cú pháp

CALCULATETABLE( <bảng> , <bộ lọc 1>  , <bộ lọc 2> …)

Có thể viết theo nhiều điều kiện lọc khác nhau, mỗi điều kiện là 1 tham số bộ lọc nối tiếp nhau, ngăn cách bởi dấu phẩy

Tham số

<bảng> : bảng ban đầu muốn lọc

<bộ lọc> : điều kiện lọc các giá trị trong từng cột

Giá trị trả về

Là bảng tính mới chỉ bao gồm các giá trị thỏa mãn các điều kiện lọc.

Kết quả là dạng bảng, không phải 1 giá trị số. Bảng này có thể dùng kết hợp trong các hàm yêu cầu tham số là dạng Bảng.

Nhận xét

– Khi biểu thức bộ lọc được cung cấp, hàm CALCULATETABLE sửa đổi ngữ cảnh bộ lọc để đánh giá biểu thức. Đối với mỗi biểu thức bộ lọc, có thể có hai kết quả tiêu chuẩn khi biểu thức bộ lọc không được bao bọc trong hàm KEEPFILTERS:

+ Nếu các cột (hoặc bảng) không có trong ngữ cảnh bộ lọc, thì các bộ lọc mới sẽ được thêm vào ngữ cảnh bộ lọc để đánh giá biểu thức.
+ Nếu các cột (hoặc bảng) đã có trong ngữ cảnh bộ lọc, các bộ lọc hiện có sẽ bị bộ lọc mới ghi đè để đánh giá biểu thức CALCULATETABLE.
– Chức năng này không được hỗ trợ để sử dụng trong chế độ DirectQuery khi được sử dụng trong các cột được tính toán hoặc các quy tắc bảo mật cấp hàng (RLS).

Ví dụ

Công thức sau đây tính tổng số tiền bán được trong cột Results của bảng Sales, theo điều kiện là năm ở cột Year là năm 2019

=SUMX( CALCULATETABLE( Sales[Results] , Sales[Year] = 2019)

SUM(Sales[Results]) là tổng các giá trị trong cột Results của bảng Sales

Sales[Year] = 2019 là tính theo điều kiện các giá trị trong cột Year của bảng Sales bằng 2019

(với điều kiện là giá trị Text thì phải đặt trong cặp dấu nháy kép, còn giá trị Number thì viết trực tiếp không cần đặt trong cặp dấu nháy kép)

Xem thêm

Khóa học Power BI Essentials, Advanced Power BI & Revision PL-300

Khám phá Power BI và các mẫu báo cáo

[Free Download] 30 Elegant Table Designs in Microsoft Power BI

Cảm nhận học viên Power BI: Bosch Vietnam