Bài viết này mình hướng dẫn các bạn sử dụng các biến trong DAX như thế nào để làm cho phép tính trở nên dễ hiểu, thậm chí là trả về kết quả nhanh hơn trong một số trường hợp. Các biến được sử dụng để lưu trữ kết quả từ các công thức DAX.
This post is to introduce how you can use DAX variables to make calculations easier to understand and, in some cases, perform faster. Variables are used to store results from DAX expressions.
Bạn có thể sử dụng các biến trong bất kỳ loại công thức nào của DAX gồm các phép tính tạo cột, tạo bảng hay đơn giản hơn là ‘measure’. Biến được định dạng đơn giản và có thể đại diện cho bất kỳ loại đối tượng nào trong DAX. Các biến tự động gán cho mình kiểu dữ liệu được gắn vào. Bạn phải sử dụng mệnh đề RETURN để kết thúc một khai báo biến. Bạn cũng có thể khai báo nhiều biến con trong một khai báo biến mẹ nhưng chỉ cần một mệnh đề RETURN.
You can use variables in any type of DAX calculation including calculated columns, measures, and tables. Variables are not strictly typed and can represent any type of object in DAX. Variables automatically assume the type of the object being assigned. You must use a RETURN statement to close a layer of variable scope. You can declare multiple variables within the same layer of scope and you can use them with a single RETURN statement.
Dưới đây là cấu trúc đơn giản để tạo và sử dụng một biến trong hàm DAX:
This is the basic structure of creating and using a variable in your DAX expression:
VAR varname = expression
RETURN expression
Ví dụ:
Example:
myfirst_var =
VAR myfirst_var = 1
RETURN myfirst_var

Ví dụ dưới đây trình bày cấu trúc đơn giản của một hàm sử dụng nhiều biến DAX:
The following example shows the basic structure of a formula using multiple DAX variables:
multiple_vars =
VAR my_var_1 = 10
VAR my_var_2 = my_var_1 * 2
RETURN my_var_2

Using Variables with Text
Các biến có thể được lưu trữ dưới dạng văn bản, cũng như dạng số vậy. Biến thừa hưởng kiểu của phép tính mà nó được gán. Ví dụ dưới đây nối văn bản của hai biến textVar1 và textVar2 lại với nhau.
my text =
VAR textVar1 = “Hello”
VAR textVar2 = “DAX”
RETURN CONCATENATE(textVar1,textVar2)

Using Variables in Calculated Columns
Khi bạn sử dụng các biến bên trong một phép tính tạo cột, các biến sẽ tự động truy cập các giá trị trong bất kỳ cột nào từ cùng một hàng. Ví dụ dưới đây sử dụng các biến để tạo ra một cột mới kết hợp các giá trị riêng biệt từ hai cột.
When you are using variables inside calculated columns, variables automatically have access to values in any column from the same row. This example uses variables to help create a new column that combines separate location values into a single piece of text in the new column.
Full name =
VAR first_name = Info[First Name]
VAR last_name = Info[Last Name]
RETURN first_name&” “&last_name

Using Variables in Calculated Measures
Sự khác nhau giữa các biến được sử dụng trong phép tính tạo measure so với phép tính tạo cột là các biến trong phép tính tạo measure không có sự kết nối nào đến các giá trị ở mỗi dòng như cách chúng làm với các phép tính tạo cột. Điều này có nghĩa, các biến được dùng trong phép tính tạo measure không thể được gán cho một giá trị dựa vào cột.
C Missing Values =
VAR missing_values =
FILTER(Sheet1,Sheet1[C]=0)
RETURN
COUNTROWS(missing_values)


Using Variables in Calculated Tables
Bạn cũng có thể sử dụng các biến trong phép tính DAX để tạo ra một bảng mới. Bạn sẽ thấy cách này hữu ích khi tạo ra bảng mới dựa trên các tính toán dựa trên những bảng hiện có.
You can also use variables in DAX calculations to create new calculated tables. You may find this useful when you are creating new tables as summary or aggregated versions of existing tables that require additional processing or manipulation.
C Table =
VAR C =
SELECTCOLUMNS(
Sheet1,
“Date”,Sheet1[Date],
“C”,Sheet1[C])
RETURN C


Nested Variables
Các biến có thể được lồng nhau và các lớp biến khác nhau có thể cùng tồn tại trong một phép tính. Mỗi lớp biến bắt đầu với một mệnh đề VAR và kết thúc với mệnh đề RETURN tương ứng và chỉ có thể tham chiếu đến các biến khác được khai báo cùng một cấp bậc hoặc cao hơn.
Variables can be nested and multiple layers of variable scope can exist within the same calculation. Each layer of variable scope begins with a VAR statement and ends with a matching RETURN statement and can only reference other variables declared in the same level or higher.
Nested Measure =
VAR Level1 = 10
VAR Level2_3 =
VAR level2 = 10
VAR level3 = level2*2
RETURN level3
RETURN Level2_3

Nột dung được trích dẫn từ cuốn sách ‘Beginning DAX with Power BI’ của tác giả Philip Seamark.
Sources: ‘Beginning DAX with Power BI’