跳至主要内容

Tableau 逻辑函数:IF 与 CASE 语句

了解 Tableau 中的 IF 与 CASE 语句,并探索如何使用这些逻辑函数有条件地转换和可视化数据。
· 7分钟 阅读

使用 AI 探索

“如果您全力以赴,您就能做到任何事。” “如果等于 8,我就赢了!” 条件语句是日常生活的一部分。我们经常用它们基于逻辑判断来决定行动方案:

  • 我是否全力以赴(TRUE/FALSE)?如果是,那我就能做到任何事。
  • 数字是否等于 8?如果是,我就赢了。

在 Tableau 中,您可以应用条件逻辑来模拟日常使用的相同逻辑。Tableau 提供了一系列逻辑函数,便于根据逻辑判断(布尔表达式 TRUE/FALSE,或精确值匹配)有条件地转换数据。本文将探讨 Tableau 中一些最常见的条件语句,并展示如何用它们来分析与可视化数据。

Tableau IF 语句

IF 语句是 Tableau 中的基础条件语句,允许用户评估一个布尔表达式,并在条件为真时返回一个值、在为假时返回另一个值。IF 语句的基本语法为:

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

如果最终结果取决于对另一个布尔表达式的判断,您可以像这样在语句中加入 ELSEIF 子句:

IF [condition1] THEN [value1]

  ELSEIF [condition2] THEN [value2]

  ELSE [value3]

END

例如,想要根据名称中是否包含“pop”来识别流行(pop)与非流行音乐类型,我们可以使用如下 IF 语句:

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

  ELSE 'other genre'

END

Video1.gif

嵌套 IF 语句

IF 语句也可以嵌套,以创建更复杂的条件,并针对数据的子群体评估多个条件。要构建嵌套的 IF 语句,请使用以下语法:

IF [condition1] THEN 

    IF [condition2] THEN [value1] 

      ELSE [value2] 

    END

  ELSE [value3] 

END

假设我们想要找出流行歌曲中有多大比例是适合跳舞的(依据 Spotify 音乐数据集中的 danceability 指标)。我们可以使用以下嵌套的 IF 语句来完成:

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 语句功能强大,尤其适用于不同数据子群需要满足多个条件的情形。

IIF 语句

IIF 函数是 Tableau 中另一种条件语句,它允许用户测试一个条件并返回两个值之一。IIF 函数的语法为:

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

例如,要创建一个计算字段,用于识别在 2017 至 2019 年间制作过热门歌曲的词曲作者,我们可以使用如下 IIF 函数:

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

Video3.gif

如果该歌曲在 2017 至 2019 年间(以 Billboard 为准)是热门歌曲,则返回“2017-2019 Top Song”,否则返回“Not Top Song in 2017-2019”。

将 Tableau 聚合函数与 IF 搭配使用

Tableau 提供了广泛的内置函数,可与条件语句配合使用以执行更高级的计算。最常用的一些聚合函数包括 COUNTD、SUM、AVG、MIN 和 MAX。借助聚合函数,您可以在 Tableau 中构建新指标,有效汇总洞见。您需要使用以下语法:

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

例如,让我们使用 COUNTD 函数统计在 2017 至 2019 年间拥有热门歌曲的独立艺人数:

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

Video4.gif

上述语句将返回 2017 至 2019 年间拥有热门歌曲的艺人去重数量。如果某位艺人在这些年份有多首热门歌曲,该艺人只会被计数一次。

类似地,我们可以将 SUM 和 AVG 函数与条件语句结合,对特定数据子集执行计算。

小提示:请确保将条件包裹在聚合之内。否则,您会遇到著名的错误:“Cannot mix aggregate and non aggregate comparisons or results in 'IF' expressions.”。例如,下面的语句会报错,因为我们试图对单个未聚合的数据点进行聚合。

IF error.png

Tableau CASE 语句

介绍

CASE 语句是 Tableau 中另一种条件语句,允许用户针对单个字段执行多次测试,并根据结果返回不同的值。与依赖布尔表达式判断的 IF 语句不同,CASE 语句依赖精确值匹配。如果在 WHEN 子句中使用布尔逻辑,您会在 Tableau 中看到如下错误:

CASE Error.png

CASE 语句的语法为:

CASE [expression]

     WHEN [value1] THEN [result1]

     WHEN [value2] THEN [result2]

     ELSE [default result]

END

例如,让我们用它重写识别 2017 至 2019 年间制作过热门歌曲的词曲作者的逻辑:

CASE [Year]

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

  ELSE 'Not Top Song in 2017-2019'

END

Video5.gif

在上述示例中,我们使用 WHEN IN 结构列出关注的年份(2017、2018 和 2019)。Tableau 随后使用该集合在数据中查找精确匹配。如果未找到匹配,且未指定默认值,则返回空值。

嵌套 CASE 语句

与嵌套的 IF 语句类似,您可以在 Tableau 中使用嵌套的 CASE 语句,通过计算字段实现复杂逻辑。您可以使用以下语法在 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

尽管 CASE 语句无法评估布尔表达式,也不适合识别数据中的复杂模式,但它比 IF 语句更易读且性能更好。如果数据转换足够简单,不需要复杂的 TRUE/FALSE 判断,使用 CASE 语句会更合适。在某些情况下,您也可以将 IF 与 CASE 搭配使用,实现更强大的分析。

结语

诸如 IF 和 CASE 的条件语句,是帮助您提升 Tableau 技能的有力工具。想要从入门到进阶,请务必查阅我们的资源,例如 Data Analyst in Tableau 职业路径或 Analyzing Data in Tableau 课程。

打好基础后,欢迎使用 DataLab 上提供的数据集在 Tableau 中练习可视化。IF、IIF 和 CASE WHEN 语句很快就会成为您的本能。祝您好运!

Tableau CASE 与 IF 常见问题

如何判断使用 IF 还是 CASE?

您使用的函数主要取决于要完成的任务类型。相比之下, IF 语句会评估布尔表达式,而 CASE 语句严格基于字段值的精确匹配。通常,CASE 语句可以转换为IF 语句。反之则不太可能,因为IF 语句用于执行更复杂的判断,而CASE 语句通常无法处理这类情况。

IF 与 CASE 有何区别?

与 IF 语句 既可在未聚合的维度上评估布尔逻辑,也可在聚合度量上评估布尔逻辑不同,CASE 语句仅评估精确值匹配。因此,IF 语句的灵活性高于 CASE 语句,可用于在数据上执行更复杂的逻辑。然而,CASE 语句在可读性与性能方面优于 IF 语句。CASE 语句非常适用于仅需进行简单转换的数据场景。

我需要为条件函数添加格式吗?

虽然 Tableau 尚未在计算字段对话框中提供自动格式化功能,但为提升可读性,建议添加格式化,例如:

  • 注释:您可以使用 // 进行单行注释,使用 /* <...> */ 进行多行注释;
  • 换行与缩进:添加换行与缩进,便于查看工作簿的他人理解可视化中嵌入的不同逻辑层级。
IF 与 IIF 有何区别?

二者的主要区别在于,IF 语句可以测试多个条件并根据结果返回不同的值,而 IIF 函数一次只能测试一个条件并返回两个值之一。虽然您可以通过 IF 语句实现更复杂的逻辑,但在以清晰简洁为先的简单条件场景中,IIF 函数非常好用。

为什么不直接使用 Tableau 内置的参数和筛选功能?

在某些情况下,筛选器和参数功能不足以满足数据分析需求。正如我们在Tableau 计算字段教程中所解释的,有时您需要在分析前创建新变量以补足缺失的数据。通常,您需要执行的转换可归入以下五类:

  • 对数据进行分段
  • 转换字段的数据类型,例如将字符串转换为日期,或将整数转换为浮点数
  • 聚合数据
  • 筛选结果
  • 计算比率

主题