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

Hàm logic trong Tableau: IF và CASE

Tìm hiểu về các câu lệnh IF và CASE trong Tableau và cách dùng các hàm logic này để biến đổi và trực quan hóa dữ liệu có điều kiện.
· 7 phút đọc

Khám phá cùng AI

“Nếu bạn nỗ lực, bạn có thể làm được mọi thứ.” “Nếu con số bằng 8, tôi thắng trò chơi!” Câu điều kiện là một phần của đời sống hàng ngày. Chúng ta thường xuyên dùng chúng để quyết định hành động dựa trên đánh giá logic:

  • Tôi có nỗ lực không (ĐÚNG/SAI)? Nếu có, tôi có thể làm bất cứ điều gì.
  • Số đó có = 8 không? Nếu có, tôi thắng trò chơi.

Trong Tableau, bạn có thể áp dụng logic điều kiện để mô phỏng cùng kiểu lý luận bạn dùng mỗi ngày. Tableau cung cấp một loạt hàm logic giúp bạn dễ dàng biến đổi dữ liệu có điều kiện dựa trên đánh giá logic, hoặc là một biểu thức boolean (ĐÚNG/SAI) hoặc là khớp giá trị chính xác. Trong bài viết này, chúng tôi sẽ khám phá một số câu lệnh điều kiện phổ biến trong Tableau và cách dùng chúng để phân tích và trực quan hóa dữ liệu.

Câu lệnh IF trong Tableau

IF là câu lệnh điều kiện cơ bản trong Tableau, cho phép người dùng đánh giá một biểu thức boolean và trả về một giá trị nếu điều kiện đúng, và một giá trị khác nếu sai. Cú pháp cơ bản của câu lệnh IF là:

IF [condition] THEN [value1] ELSE [value2] END

Nếu kết quả cuối cùng phụ thuộc vào việc đánh giá một biểu thức boolean thay thế, bạn có thể chèn mệnh đề ELSEIF vào câu lệnh như sau:

IF [condition1] THEN [value1]

  ELSEIF [condition2] THEN [value2]

  ELSE [value3]

END

Ví dụ, để phân loại thể loại nhạc pop và không-pop dựa trên việc tên có chứa ‘pop’ hay không, ta có thể dùng câu lệnh IF sau:

IF CONTAINS([Top Genre], 'pop') THEN 'pop'

  ELSE 'other genre'

END

Video1.gif

IF lồng nhau

Các câu lệnh IF cũng có thể được lồng nhau để tạo điều kiện phức tạp hơn và đánh giá nhiều điều kiện cho các nhóm con trong dữ liệu. Để xây dựng IF lồng nhau, hãy dùng cú pháp sau:

IF [condition1] THEN 

    IF [condition2] THEN [value1] 

      ELSE [value2] 

    END

  ELSE [value3] 

END

Giả sử chúng ta muốn tìm tỷ lệ bài hát pop có thể nhảy được (theo thước đo danceability trong Bộ dữ liệu Spotify Music). Ta có thể dùng câu lệnh IF lồng nhau sau để xác định:

IF CONTAINS([Top Genre], 'pop') THEN

      IF [Dnce] > 66 THEN 'danceable pop' // 66 is the median

      ELSE 'less danceable pop'

    END

  ELSE 'not pop'

END

Video2.gif

IF lồng nhau là các hàm mạnh mẽ, đặc biệt khi cần thỏa mãn nhiều điều kiện cho các nhóm con khác nhau của dữ liệu.

IIF

Hàm IIF là một câu lệnh điều kiện khác trong Tableau, cho phép người dùng kiểm tra một điều kiện và trả về một trong hai giá trị. Cú pháp của hàm IIF là:

IIF([condition], [value if true], [value if false])

Ví dụ, để tạo một trường tính toán xác định các nhạc sĩ sáng tác bài hát đứng đầu bảng xếp hạng trong giai đoạn 2017–2019, ta có thể dùng hàm IIF sau:

IIF([Year] >= 2017 AND [Year] <= 2019, '2017-2019 Top Song', 'Not Top Song in 2017-2019')

Video3.gif

Điều này sẽ trả về “2017-2019 Top Song” nếu bài hát đứng đầu trong giai đoạn 2017 đến 2019 (theo Billboard) và “Not Top Song in 2017-2019” nếu không.

Sử dụng hàm tổng hợp của Tableau với IF

Tableau cung cấp nhiều hàm dựng sẵn có thể dùng cùng với câu lệnh điều kiện để thực hiện các phép tính nâng cao. Một số hàm tổng hợp thường dùng gồm COUNTD, SUM, AVG, MIN và MAX. Với các hàm tổng hợp, bạn có thể tóm lược thông tin hiệu quả bằng cách xây dựng chỉ số mới trong Tableau. Bạn cần dùng cú pháp sau:

<Aggregation>(IF [Condition] THEN [value] END)

Ví dụ, hãy đếm số nghệ sĩ duy nhất có bài hát đứng đầu giữa năm 2017 và 2019 với hàm COUNTD:

COUNTD(IF [Year] >= 2017 and [Year] <= 2019 THEN [Artist] END)

Video4.gif

Câu lệnh trên sẽ trả về số lượng nghệ sĩ phân biệt có bài hit trong giai đoạn 2017–2019. Nếu một nghệ sĩ có nhiều bài hit trong các năm đó, tên nghệ sĩ chỉ được đếm một lần.

Tương tự, ta có thể dùng các hàm SUM và AVG kết hợp với câu lệnh điều kiện để tính toán trên các tập con dữ liệu cụ thể.

Lời khuyên: hãy chắc chắn bao bọc điều kiện bên trong phép tổng hợp. Nếu không, bạn sẽ gặp lỗi quen thuộc: “Cannot mix aggregate and non aggregate comparisons or results in 'IF' expressions.” Ví dụ, câu lệnh dưới đây báo lỗi vì ta đang cố gắng thực hiện phép tổng hợp trên một điểm dữ liệu đơn lẻ, bản thân nó không được tổng hợp.

IF error.png

Câu lệnh CASE trong Tableau

Giới thiệu

Câu lệnh CASE là một câu lệnh điều kiện khác trong Tableau, cho phép người dùng thực hiện nhiều phép kiểm tra trên một trường và trả về các giá trị khác nhau dựa trên kết quả. Khác với IF dựa vào đánh giá biểu thức boolean, CASE dựa vào khớp giá trị chính xác. Nếu mệnh đề WHEN dùng logic boolean, bạn sẽ nhận lỗi sau trong Tableau:

CASE Error.png

Cú pháp của câu lệnh CASE là:

CASE [expression]

     WHEN [value1] THEN [result1]

     WHEN [value2] THEN [result2]

     ELSE [default result]

END

Ví dụ, hãy viết lại logic để xác định các nhạc sĩ có bài hát đứng đầu trong giai đoạn 2017–2019:

CASE [Year]

  WHEN IN (2017, 2018, 2019) THEN '2017-2019 Top Songs'

  ELSE 'Not Top Song in 2017-2019'

END

Video5.gif

Trong ví dụ trên, chúng ta dùng cấu trúc WHEN IN để liệt kê các năm quan tâm (2017, 2018 và 2019). Tableau sau đó dùng tập giá trị này để tìm khớp chính xác trong dữ liệu. Nếu không tìm thấy dữ liệu khớp và không chỉ định giá trị mặc định, giá trị null sẽ được trả về. 

CASE lồng nhau

Tương tự IF lồng nhau, bạn có thể dùng CASE lồng nhau trong Tableau để biểu đạt logic phức tạp bằng một trường tính toán. Bạn có thể dùng cú pháp dưới đây để trả về logic lồng nhau với CASE:

CASE [expression1]

  WHEN [value1] THEN

    (CASE [expression2]

       WHEN [value2] THEN [result1]

       WHEN [value3] THEN [result2]

…

       ELSE [default result]

     END)

  WHEN [value4] THEN

    (CASE [expression2]

       WHEN [value5] THEN [result3]

       WHEN [value6] THEN [result4]

…

       ELSE [default result]

     END)

  ELSE [default result]

END

Mặc dù CASE không thể đánh giá các biểu thức boolean và không phù hợp để nhận diện các mẫu phức tạp trong dữ liệu, chúng dễ đọc hơn và hiệu năng tốt hơn so với IF. Nếu dữ liệu đủ đơn giản để biến đổi và không cần đánh giá ĐÚNG/SAI phức tạp, bạn nên dùng CASE. Trong một số trường hợp, bạn có thể kết hợp IF và CASE để có phân tích mạnh mẽ hơn.

Kết luận

Các câu lệnh điều kiện như IF và CASE là công cụ hiệu quả để nâng tầm kỹ năng Tableau của bạn với vai trò người làm dữ liệu. Để tiến bộ nhanh với Tableau, hãy xem các tài nguyên của chúng tôi như lộ trình nghề nghiệp Data Analyst in Tableau hoặc khóa học Analyzing Data in Tableau.

Khi đã có nền tảng vững, hãy luyện tập trực quan hóa trong Tableau bằng các bộ dữ liệu có sẵn trên DataLab. Các câu lệnh IF, IIF và CASE WHEN sẽ trở nên quen thuộc với bạn. Chúc may mắn!

Câu hỏi thường gặp về CASE và IF trong Tableau

Làm sao biết khi nào dùng IF so với CASE?

Hàm bạn dùng chủ yếu phụ thuộc vào tác vụ bạn muốn thực hiện. Trong khi IF đánh giá một biểu thức boolean, CASE chỉ khớp theo giá trị của trường. Thường thì một câu lệnh CASE có thể chuyển đổi thành IF, nhưng chiều ngược lại ít khả thi hơn, vì IF được dùng cho các đánh giá phức tạp mà CASE thường không xử lý được.

Sự khác nhau giữa IF và CASE là gì?

Trong khi IF có thể đánh giá logic boolean trên các chiều không tổng hợp hoặc các thước đo đã tổng hợp, CASE chỉ đánh giá các khớp giá trị chính xác. Vì lý do đó, IF linh hoạt hơn CASE và có thể dùng để thực hiện logic phức tạp hơn trên dữ liệu. Tuy nhiên, CASE mang lại khả năng đọc tốt hơn và hiệu năng cao hơn so với IF. CASE hoạt động rất tốt khi dữ liệu chỉ cần các biến đổi đơn giản.

Tôi có nên định dạng hàm điều kiện không?

Mặc dù Tableau chưa hỗ trợ tự động định dạng văn bản trong hộp thoại trường tính toán, việc thêm định dạng để tăng khả năng đọc là ý tưởng hay, gồm:

  • Chú thích: bạn có thể dùng // cho chú thích một dòng và /* <...> */ cho chú thích nhiều dòng;
  • Xuống dòng và thụt lề: thêm xuống dòng và thụt lề để người khác xem workbook dễ hiểu các lớp logic trong trực quan hóa.
Sự khác nhau giữa IF và IIF là gì?

Khác biệt chính giữa câu lệnh IF và hàm IIF là câu lệnh trước có thể kiểm tra nhiều điều kiện và trả về các giá trị khác nhau dựa trên kết quả, còn câu lệnh sau chỉ kiểm tra một điều kiện tại một thời điểm và trả về một trong hai giá trị. Dù bạn có thể tận dụng logic phức tạp hơn với IF, hàm IIF rất phù hợp cho các điều kiện đơn giản, nơi sự rõ ràng và ngắn gọn được ưu tiên.

Sao không chỉ dùng tham số và bộ lọc tích hợp sẵn của Tableau?

Trong một số trường hợp, tính năng bộ lọc và tham số sẽ không đủ để phân tích dữ liệu. Như giải thích trong hướng dẫn Calculating Fields in Tableau của chúng tôi, đôi khi bạn cần tạo biến mới để bù phần dữ liệu thiếu trước khi phân tích. Thường thì các biến đổi bạn cần thực hiện sẽ rơi vào năm nhóm sau:

  • Phân khúc dữ liệu
  • Chuyển đổi kiểu dữ liệu của một trường, như chuyển chuỗi sang ngày hoặc số nguyên sang số thực
  • Tổng hợp dữ liệu
  • Lọc kết quả
  • Tính tỷ lệ

Chủ đề

Liên quan