DAX (Data Analysis Expression) trong Power BI bao gồm các hàm, toán tử và hằng số được sử dụng trong các công thức hoặc biểu thức để thực hiện tính toán và trả về một hoặc nhiều giá trị. DAX phân loại thành các nhóm như sau: Date and Time, Time Intelligence, Information, Logical, Mathematical, Statistical, Text, Parent/Child và các hàm khác.
Trong bài viết này, Datapot sẽ chia sẻ với mọi người 2 hàm DAX thuộc nhóm Logical thường được sử dụng nhiều trong công việc của một Data Analyst là: hàm IF và SWITCH. Chúng ta hãy cũng tìm hiểu về các tìm hiểu về các hàm này cũng như ví dụ về cách ứng dụng của hàm trong thực tế nhé.
Mục lục
MỤC ĐÍCH VÀ CÚ PHÁP CỦA HÀM IF VÀ SWITCH
Hàm IF
Mục đích
Hàm IF được sử dụng để thực hiện các phép so sánh logic và có điều kiện, sau đó trả về các giá trị khác nhau tùy thuộc vào kết quả của điều kiện đó.
Cú pháp
= IF ( <LogicalTest>, <ResultIfTrue> ,[ <ResultIfFalse>] )
Giải thích tham số
Tham số | Giải thích |
LogicalTest | Điều kiện áp dụng, trả về kết quả TRUE hoặc FALSE |
ResultIfTrue | Giá trị được trả về nếu kiểm tra logic là TRUE |
ResultIfFalse (Optional) | Giá trị được trả về nếu kiểm tra logic là FALSE. Nếu không truyền giá trị vào tham số này, hàm sẽ mặc định trả về (Blank) |
Kết quả
Kết quả biểu thức là <ResultIfTrue> hoặc <ResultIfFalse>, tùy thuộc vào LogicalTest.
Đầu tiên, hàm IF kiểm tra điều kiện được đưa ra trong tham số đầu tiên của hàm (<LogicalTest>)
- Nếu điều kiện (<LogicalTest>) này TRUE, tham số <ResultIfTrue> sẽ được thực thi
- Nếu điều kiện (<LogicalTest>) trả ra kết quả FALSE, tham số <ResultIfFalse> sẽ được thực thi.
Lưu ý
- Nếu có n điều kiện cần kiểm tra (n>1) thì cần (n-1) hàm IF lồng nhau, Power BI sẽ đánh giá lần lượt từ IF ngoài vào IF trong, thực hiện từng kiểm tra logic và trả về giá trị tương ứng dựa trên kết quả của mỗi điều kiện (khi gặp điều kiện trả về TRUE, Power BI sẽ ngừng kiểm tra các điều kiện khác).
- Tham số <ResultIfTrue>, <ResultIfFalse> có thể trả về giá trị có các kiểu dữ liệu khác nhau trong tùy tình huống, khi đó Power BI sẽ cố gắng chuyển đổi các giá trị đó về một kiểu dữ liệu duy nhất phù hợp nhất.
- Trong trường hợp <ResultIfTrue>, <ResultIfFalse>] thuộc kiểu dữ liệu numeric, hàm IF sẽ trả về kiểu dữ liệu duy nhất, chứa cả hai kiểu dữ liệu <ResultIfTrue>,<ResultIfFalse>.
Ví dụ: công thức IF(<condition>, 1.0, 0) chỉ trả về giá trị thập phân (tập hợp số thập phân bao gồm số nguyên)
Hàm SWITCH
Mục đích
Hàm SWITCH trong DAX, sẽ kiểm tra lần lượt các điều kiện cho tới khi gặp giá trị thỏa mãn thì ngừng lại và trả về một giá trị tương ứng với điều kiện thỏa mãn. Hàm này có thể sử dụng thay thế các chuỗi lệnh IF lồng nhau khi bạn cần kiểm tra nhiều điều kiện đối với một biến duy nhất, từ đó giúp công thức trực quan, dễ đọc hơn.
Cú pháp
= SWITCH ( <Expression>, <Value>, <Result> [, <Value 2>, <Result 2> [, … ] ] [, <Else>] )
Giải thích tham số
Tham số | Giải thích |
Expression (Biểu thức) | Là một giá trị hoặc 1 biểu thức tính trả về kết quả cụ thể |
Value (Giá trị) | Là giá trị dùng để so sánh với giá trị trong cột hoặc 1 biểu thức / mệnh đề điều kiện so sánh |
Result (Giá trị chuyển đổi) | Kiểm tra điều kiện trả ra là TRUE hay FALSE. Nếu TRUE, <Value> sẽ được trả về. Nếu FALSE, sẽ kiểm tra điều kiện của cặp [<Value2>,<Result2>] và lặp lại với cặp giá trị tiếp theo |
Else (Không bắt buộc) | Nếu không tìm thấy kết quả khớp chính xác, hàm sẽ trả về giá trị này. Nếu không chỉ định đối số này, hàm sẽ trả về giá trị blank |
Kết quả
Kết quả biểu thức là <Value> hoặc <Result> hoặc <Else>, tùy thuộc vào <Expression>.
Lưu ý
• Tham số < Expression> có thể là một giá trị hằng số hoặc một biểu thức phức tạp. Một cách phổ biến là sử dụng TRUE() cho tham số đầu tiên vì khi sử dụng TRUE(), hàm cho phép chúng ta thiết lập một điều kiện mặc định.
• Tất cả các tham số <Result> và <Else> đều phải cùng kiểu dữ liệu
• Thứ tự của các điều kiện rất quan trọng. Ngay khi điều kiện trả ra TRUE, kết quả tương ứng sẽ được trả về, các giá trị tiếp theo sẽ không được đánh giá. Hãy đảm bảo các điều kiện được sắp xếp hợp lý, tránh dẫn đến kết quả không mong muốn.
Trường hợp cụ thể sử dụng hàm If và hàm SWITCH
Trường hợp 1: Sử dụng hàm để nhóm các nhân viên theo đánh giá hiệu suất:
Giả sử bạn đang làm việc với một bảng dữ liệu chứa thông tin về điểm số đánh giá nhân viên gồm mã nhân viên, và điểm tổng kết đánh giá. Bạn cần tạo Column <Assess> để nhóm các nhân viên theo hiệu suất:

•Sử dụng IF:
Công thức:
Assess (IF) =
IF (
Employeee[PerformanceScore] >= 90,
"Good",
IF ( Employeee[PerformanceScore] >= 80, "Average", "Below Average" )
)
Giải thích công thức:
Bước 1: Điều kiện <PerformanceScore> >=90 sẽ được đánh giá đầu tiên
Bước 2: Nếu <PerformanceScore> >=90, kết trả sẽ được trả “Good”
Bước 3: Nếu điều kiện trên đã thỏa mãn thì hàm sẽ không tiếp tục check các điều kiện đằng sau.
Bước 4: Nếu điều kiện trên không thỏa mãn, hàm sẽ tiếp tục xét đến hàm IF được lồng kế kiếp:
+ Nếu <PerformanceScore> >=80, kết trả sẽ được trả “Average”
Bước 5: Nếu không thỏa mãn điều kiện nào, hàm mặc định trả về “Below Average”
•Sử dụng SWITCH:
Công thức:
Assess (Switch) =
SWITCH (
TRUE (),
Employeee[PerformanceScore] >= 90, "Good",
Employeee[PerformanceScore] >= 80, "Average",
"Below Average"
)
Giải thích công thức:
Bước 1: Power BI sẽ duyệt qua từng dòng của cột <PerformanceScore> và trả ra giá trị TRUE
Bước 2: Power BI kiểm tra điều kiện <PerformanceScore> >=90, nếu bằng thì kết quả trả về “Good”
Bước 3: Nếu điều kiện trên không thỏa mãn , hàm sẽ xét đến <PerformanceScore> >=80, nếu bằng kết quả trả về “Average”
Bước 4: Nếu không thỏa mãn điều kiện nào, kết quả mặc định sẽ là “Below Average”
Kết quả trả về:

Trường hợp 2: Sử dụng hàm để kiểm tra phép chia hợp lệ trong tính tăng tưởng doanh thu
Giả sử bạn đang làm việc với một bảng ‘Revenue’ chứa thông tin về tên khu vực, doanh thu hiện tại, và doanh thu tháng trước( bạn có 2 measure CurrentRev: tính doanh thu hiện tại, PreviousRev: tính doanh thu tháng trước). Bạn cần tạo Measure GrowthRate để tính tăng trưởng doanh thu và nếu có phép chia không hợp lệ (chia cho 0) Measure sẽ trả về “Tỷ Lệ Tăng Trưởng Không Hợp Lệ”:

Sử dụng IF:
Công thức:
GrowthRate(IF) =
IF (
[PreviousRev] == 0,
"Tỷ Lệ Tăng Trưởng Không Hợp Lệ",
( [CurrentRev] - [PreviousRev] ) / [PreviousRev]
)
Giải thích công thức:
Bước 1: Điều kiện [PreviousRev] == 0 sẽ được đánh giá đầu tiên
Bước 2: Nếu [PreviousRev] == 0, kết trả sẽ được trả “Tỷ Lệ Tăng Trưởng Không Hợp Lệ”
Bước 3: Nếu không thỏa mãn điều kiện trên, hàm mặc định trả về giá trị tăng trưởng
(([CurrentRev] – [PreviousRev])/[PreviousRev])
Sử dụng Switch:
Công thức:
GrowthRate(Switch) =
SWITCH (
TRUE (),
[PreviousRev] == 0, "Tỷ Lệ Tăng Trưởng Không Hợp Lệ",
( [CurrentRev] - [PreviousRev] ) / [PreviousRev]
)
Giải thích công thức:
Bước 1: Power BI sẽ duyệt qua từng giá trị của Measure< PreviousRev> và trả ra giá trị TRUE
Bước 2: Power BI kiểm tra điều kiện [PreviousRev] == 0, nếu bằng thì kết quả trả về “Tỷ Lệ Tăng Trưởng Không Hợp Lệ”
Bước 4: Nếu không thỏa mãn điều kiện trên, kết quả mặc định sẽ trả về giá trị tăng trưởng (([CurrentRev] – [PreviousRev])/[PreviousRev])
Kết quả trả về:

So sánh IF và SWITCH
Tiêu chí | Hàm IF | Hàm SWITCH |
Mục đích | Hàm IF được sử dụng để thực hiện các phép so sánh logic và có điều kiện, sau đó trả về các giá trị khác nhau tùy thuộc vào kết quả của điều kiện đó | Hàm SWITCH sẽ kiểm tra lần lượt từng điều kiện cho tới khi gặp giá trị thỏa mãn thì ngừng lại và trả về một giá trị tương ứng với điều kiện thỏa mãn |
PBI excecution | Cách Power BI thực thi hàm: • Đánh giá điều kiện đầu tiên: Power BI kiểm tra biểu thức điều kiện (logical test) đầu tiên. Nếu điều kiện này là đúng (TRUE), nó sẽ trả về giá trị tương ứng và dừng lại. • Điều kiện tiếp theo nếu có: Nếu điều kiện đầu tiên là sai (FALSE), và có điều kiện IF lồng nhau, Power BI sẽ tiếp tục kiểm tra điều kiện tiếp theo. • Lặp lại cho đến khi hết điều kiện: Quá trình này lặp lại cho đến khi một điều kiện đúng được tìm thấy hoặc hết các điều kiện để kiểm tra. • Trả về giá trị mặc định: Nếu không có điều kiện nào đúng, hàm IF sẽ trả về giá trị mặc định (giá trị cuối cùng trong hàm IF lồng nhau). | 1. Cách Power BI thực thi hàm • Đánh giá biểu thức: Power BI đánh giá biểu thức (hoặc giá trị cụ thể) một lần. • So sánh với các điều kiện: Power BI so sánh giá trị của biểu thức đã đánh giá với từng điều kiện (value) được liệt kê trong hàm SWITCH. • Trả về kết quả tương ứng: Nếu tìm thấy điều kiện khớp, Power BI trả về giá trị kết quả tương ứng với điều kiện đó. • Trả về giá trị mặc định nếu không có điều kiện nào khớp: Nếu không có điều kiện nào khớp, Power BI trả về giá trị mặc định.
|
Điều kiện kiểm tra | Phù hợp cho các điều kiện Boolean. Nếu có nhiều điều kiện lồng nhau, việc kiểm tra trở nên phức tạp. | Phù hợp cho nhiều điều kiện kiểm tra với các giá trị cụ thể. Cấu trúc rõ ràng hơn khi xử lý nhiều điều kiện. |
Độ phức tạp | Có thể phức tạp và khó đọc nếu có nhiều điều kiện lồng nhau. | Đơn giản và dễ đọc hơn khi kiểm tra nhiều giá trị của một biến duy nhất. |
Tính linh hoạt | Rất linh hoạt, có thể kiểm tra các điều kiện phức tạp và liên quan đến nhiều biến. | Ít linh hoạt hơn, chủ yếu dùng để kiểm tra một biến duy nhất với nhiều giá trị cụ thể. |
Hiệu suất | Có thể kém hiệu quả hơn nếu có nhiều lệnh IF lồng nhau. | Có thể hiệu quả hơn trong việc kiểm tra nhiều giá trị của một biến duy nhất. |
Tính dễ đọc | Khó đọc hơn khi có nhiều điều kiện lồng nhau. | Dễ đọc và bảo trì hơn khi kiểm tra nhiều giá trị của một biến duy nhất. |
Tạm kết
Trong bài viết này, Datapot đã cùng với mọi người tìm hiểu về 2 hàm DAX cơ bản thuộc nhóm Logical: hàm IF, SWITCH trong Power BI và cách sử dụng trong các ví dụ cụ thể. Bằng cách hiểu và sử dụng 2 hàm này một cách chính xác, bạn có thể tận dụng tối đa khả năng của Power BI trong việc phân tích và hiển thị dữ liệu.
Hy vọng bài viết này của Datapot đã cung cấp cho bạn kiến thức cần thiết để sử dụng hàm IF, SWITCH trong Power BI một cách hiệu quả.
Xem thêm video hướng dẫn sử dụng what-if parameter để giải case xác định khách hàng có nguy cơ rời bỏ
