Chuyển đến nội dung chính

Làm chủ SWITCH trong DAX cho Power BI: Hướng dẫn toàn diện

Tìm hiểu hàm SWITCH trong Power BI: khái niệm, cách sử dụng, cùng các lỗi thường gặp và thực hành tốt nhất.
· 10 phút đọc

Khám phá cùng AI

Hàm SWITCH() trong Power BI là một hàm logic DAX cung cấp cách xử lý nhiều điều kiện có cấu trúc và dễ đọc hơn so với việc lồng nhiều câu lệnh IF().

Trong hướng dẫn này, chúng ta sẽ xem xét chi tiết hàm SWITCH(). Chúng ta sẽ thảo luận hàm này là gì, cách sử dụng, cùng những lỗi thường gặp và các thực hành tốt nhất khi dùng hàm.

Để bắt đầu với Power BI và DAX, hãy xem lộ trình kỹ năng Power BI Fundamentals và giữ sẵn DAX Cheat Sheet để nhanh chóng tra cứu nhiều hàm DAX hữu ích mà bạn sẽ gặp.

image2.png

Hàm SWITCH trong Power BI là gì?

Hàm SWITCH() trong DAX cho Power BI giúp bạn viết các câu lệnh điều kiện dễ dàng hơn. Hàm sẽ đánh giá một biểu thức rồi so sánh với một loạt giá trị và trả về kết quả đầu tiên khớp với giá trị đó.

SWITCH() có thể thay thế nhiều câu lệnh IF() lồng nhau bằng cách cô đọng nhiều điều kiện vào một hàm duy nhất. Điều này giúp biểu thức DAX gọn gàng, đơn giản hơn và dễ đọc, dễ bảo trì hơn. Nó cũng cải thiện khả năng đọc công thức, giúp bạn và người khác dễ hiểu và chỉnh sửa phép tính.

Cú pháp và cách dùng cơ bản

Cú pháp cơ bản của hàm SWITCH() là:

SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
  • Expression: Biểu thức được đánh giá.
  • Value: Các giá trị được đem so với biểu thức.
  • Result: Kết quả được trả về nếu biểu thức khớp với giá trị tương ứng.
  • Else: Một kết quả tùy chọn được trả về nếu không có giá trị nào khớp biểu thức.

Mẹo nhanh để đọc các câu cú pháp cơ bản (như ở trên) thường thấy trong hướng dẫn và tài liệu chính thức của Microsoft Power BI: Câu trên hiển thị hai cặp tham số <value> và <result>, trong đó cặp thứ hai được đặt trong ngoặc vuông. Điều này có nghĩa có thể có nhiều hơn một cặp giá trị và kết quả, và chúng là tùy chọn cho hàm SWITCH(). Tương tự, phần <else> cũng được đặt trong ngoặc vuông, nên cũng là tùy chọn.

So sánh với các câu lệnh IF lồng nhau

Cách truyền thống để xử lý nhiều điều kiện trong DAX là dùng các câu lệnh IF lồng nhau, vốn nhanh chóng trở nên phức tạp và khó đọc. Ví dụ, xử lý bốn điều kiện sẽ cần ba hàm IF lồng nhau. Ngược lại, hàm SWITCH() đơn giản hóa bằng cách cho phép một danh sách cặp điều kiện-kết quả rõ ràng, cải thiện khả năng đọc và bảo trì.

Mặc dù nhiều câu lệnh IF lồng nhau có thể đạt kết quả như SWITCH(), SWITCH() vẫn được ưa chuộng vì dễ viết hơn và ít lỗi hơn. Nhiều lời gọi IF() cũng có thể ảnh hưởng tiêu cực đến hiệu năng báo cáo. Tuy nhiên, cũng cần nhớ hàm SWITCH() cũng có thể tác động đến hiệu năng. Vì vậy, chúng ta sẽ thảo luận các chiến lược tối ưu hóa hàm SWITCH() cùng một số thực hành tốt nhất ở phần sau của hướng dẫn.

Phù hợp cho các phép tính phức tạp

SWITCH() đặc biệt phù hợp trong các tình huống bạn có tập giá trị xác định cho một biểu thức và kết quả tương ứng cho mỗi giá trị.

Hàm này gọn gàng và hiệu quả hơn so với việc dùng nhiều IF() lồng nhau, nhất là khi số điều kiện tăng. Điều đó khiến SWITCH() là lựa chọn tuyệt vời cho các phép tính phức tạp, nơi tính dễ đọc và hiệu năng đều quan trọng.

Tuy nhiên, dù SWITCH() giúp tăng tính dễ đọc, lợi ích về hiệu năng so với IF lồng nhau còn tùy thuộc trường hợp sử dụng cụ thể và mô hình dữ liệu bên dưới.

Cách sử dụng hàm SWITCH trong Power BI

Các ví dụ dưới đây minh họa tính linh hoạt của hàm SWITCH() trong việc giải quyết nhiều kịch bản nghiệp vụ trong Power BI. Bằng cách thay thế các câu lệnh IF() phức tạp bằng SWITCH(), bạn có thể đạt được công thức DAX rõ ràng và dễ bảo trì hơn.

Ví dụ 1: Phân tích hạng mục doanh số

Giả sử một doanh nghiệp muốn phân loại doanh số thành các mức dựa trên tổng doanh số để phân tích hiệu quả bán hàng hiệu quả hơn.

Trong công thức DAX dưới đây, chúng ta dùng hàm SWITCH() để gán hạng mục doanh số dựa trên tổng doanh số. Bạn sẽ thấy chúng ta dùng hàm logic TRUE() làm biểu thức trong công thức. Lý do là SWITCH() chỉ tìm kiếm khớp chính xác, còn chúng ta muốn dùng các toán tử như lớn hơn, nhỏ hơn trong công thức. Vì vậy, bằng cách đặt biểu thức là TRUE(), SWITCH() sẽ đánh giá từng điều kiện cho đến khi tìm được điều kiện khớp (tức khi kết quả là true).

Sales Category =
SWITCH(
    TRUE(),
    [Total Sales] < 10000, "Low Sales",
    [Total Sales] < 50000, "Medium Sales",
    [Total Sales] >= 50000, "High Sales",
    "Unknown")

Đây là kết quả trong Power BI:

image3.png

Ví dụ 2: Chiến lược chiết khấu sản phẩm

Giả sử một chuỗi bán lẻ áp dụng các mức phần trăm chiết khấu khác nhau cho sản phẩm dựa trên giá bán ròng để tối đa hóa lợi nhuận. Họ muốn tính tổng giá trị doanh số sau chiết khấu trong cửa hàng.

Trong công thức DAX dưới đây, chúng ta dùng hàm SWITCH() bên trong một biến. Vì không cần dùng công thức tính phần trăm chiết khấu ở nơi khác trong báo cáo, ta có thể giảm tính toán lặp lại và chỉ đánh giá nó trong công thức này cho doanh số đã chiết khấu.

DiscountedSales =
    VAR DiscountPct = SWITCH(
        TRUE,
        Sales[Net Price] <= 150, 0.15,
        Sales[Net Price] <= 500, 0.2,
        Sales[Net Price] <= 1000, 0.3,
        0
    )
    VAR DiscountAmount = Sales[SalesAmount] * (1 - DiscountPct)
    RETURN
    DiscountAmount

Đây là kết quả trong Power BI:

image1.png

Các lỗi thường gặp và cách tránh

Phần này điểm qua một số lỗi thường gặp khi dùng hàm SWITCH() cùng khuyến nghị để tránh.

1. Lạm dụng cho điều kiện đơn giản

Dùng SWITCH() cho các tình huống mà một câu lệnh IF đơn giản là đủ có thể khiến công thức DAX trở nên phức tạp không cần thiết.

Thay vào đó, hãy dành SWITCH() cho các trường hợp có nhiều điều kiện. Với một hoặc hai điều kiện, hãy cân nhắc dùng IF cho đơn giản.

2. Ảnh hưởng hiệu năng với tập dữ liệu lớn

Việc dùng hàm SWITCH() quá nhiều, đặc biệt với các biểu thức phức tạp, có thể làm chậm hiệu năng báo cáo trên tập dữ liệu lớn.

Tối ưu các biểu thức bên trong SWITCH() bằng cách tiền tính toán các phần phức tạp bằng biến. Biến giúp biểu thức SWITCH() gọn gàng và dễ hiểu hơn, gián tiếp góp phần tối ưu bằng cách giảm khả năng có các phép tính dư thừa hoặc không cần thiết.

Tính toán các biểu thức chung hoặc phần phức tạp trong điều kiện một lần và lưu vào biến. Điều này tránh việc tính lặp lại cùng biểu thức nhiều lần trong hàm SWITCH().

3. Dùng mặc định kém hiệu quả

Lạm dụng trường hợp mặc định trong SWITCH() để xử lý lỗi hoặc giá trị bất ngờ mà không cân nhắc kỹ có thể dẫn đến kết quả sai.

Xác định rõ điều kiện và xử lý tường minh các kịch bản đã biết. Dùng các hàm như IFERROR hoặc ISBLANK để xử lý giá trị bất ngờ hoặc thiếu.

4. Hiểu sai ngữ cảnh

Quên rằng SWITCH() được đánh giá trong ngữ cảnh hiện tại có thể dẫn đến kết quả bất ngờ, đặc biệt khi dùng trong ngữ cảnh hàng hoặc bộ lọc. Hãy xem khóa học Introduction to DAX, nơi chúng tôi bàn chi tiết hơn về các ngữ cảnh.

Khi thiết kế biểu thức SWITCH(), luôn cân nhắc ngữ cảnh hàng hoặc bộ lọc hiện tại. Sử dụng hàm chuyển đổi ngữ cảnh như CALCULATE() một cách hợp lý để điều chỉnh ngữ cảnh khi cần.

5. Thứ tự đánh giá

Bỏ qua thứ tự các điều kiện trong câu lệnh SWITCH() có thể dẫn đến kết quả bất ngờ, vì hàm SWITCH() đánh giá các điều kiện theo thứ tự được định nghĩa và dùng điều kiện khớp đầu tiên.

Đảm bảo mỗi trường hợp xuất hiện theo đúng trình tự, tương tự như khi bạn dùng các câu lệnh IF() lồng nhau.

Thực hành tốt với SWITCH

Dưới đây là một số thực hành tốt khi dùng SWITCH() hiệu quả:

  • Dùng cho nhiều điều kiện: SWITCH() lý tưởng khi bạn có hơn hai phép kiểm tra điều kiện. Nó giúp công thức dễ đọc và dễ bảo trì hơn so với IF() lồng nhau.

  • Xác định rõ mọi trường hợp: Hàm SWITCH() của bạn nên bao quát mọi kịch bản có thể, bao gồm một trường hợp mặc định để xử lý giá trị bất ngờ. Điều này giúp phép tính vững chắc và ít lỗi hơn.

  • Tối ưu cho hiệu năng: Giữ các biểu thức trong SWITCH() đơn giản nhất có thể để tránh giảm hiệu năng khi làm việc với tập dữ liệu lớn. Dùng biến để lưu kết quả trung gian có thể giúp giảm gánh nặng tính toán.

  • Kiểm thử kỹ lưỡng: Đặc biệt khi dùng SWITCH() cho logic phức tạp, hãy đảm bảo bạn kiểm thử kết quả trên nhiều kịch bản khác nhau. Điều này giúp phát hiện lỗi logic hoặc các trường hợp bị bỏ sót.

Kết luận

Nếu bạn đang tìm cách xử lý nhiều điều kiện trong Power BI hiệu quả và linh hoạt hơn, SWITCH() là câu trả lời. Không như các câu lệnh IF lồng nhau, hàm SWITCH() cô đọng nhiều điều kiện vào một hàm duy nhất, tạo ra các biểu thức DAX gọn nhẹ và đơn giản, dễ đọc và dễ bảo trì. Đồng thời, nó cũng cải thiện khả năng đọc công thức, giúp bạn và người khác dễ hiểu và chỉnh sửa phép tính.

Tuy nhiên, hãy tránh những sai lầm thường gặp khi dùng hàm SWITCH() và tuân theo các thực hành tốt mà chúng ta đã thảo luận trong hướng dẫn này.

Nếu bạn nghiêm túc muốn bắt đầu sự nghiệp với vai trò nhà phát triển Power BI, hãy xem hướng dẫn trở thành nhà phát triển BI theo từng bước của chúng tôi cùng lộ trình nghề nghiệp đầy đủ Data Analyst in Power BI, nơi sẽ dạy bạn mọi điều cần biết để bắt đầu dùng Power BI trong thực tiễn.

Joleen Bothma

Tác giả

Joleen Bothma

Chủ đề

Liên quan