逻辑函数
本文介绍 Tableau 中的逻辑函数及其用途。它还使用示例来演示如何创建逻辑计算。
逻辑计算允许您确定某个特定条件为真还是假(布尔逻辑)。例如,您可能希望根据某些截止值对值进行分类。
逻辑计算可能如下所示:
IF [Profit] > 0
THEN 'Profitable'
ELSEIF [Profit] = 0 THEN 'Break even'
ELSE 'Loss'
END
语法 | <expr1> AND <expr2> |
定义 | 对两个表达式执行逻辑合取运算。(如果两边都为 true,则逻辑测试返回 true。) |
输出 | 布尔值(True 或 False) |
示例 | IF [Season] = "Spring" AND "[Season] = "Fall" “如果(Season = Spring)和(Season = Fall)同时为 true,则返回“It's the apocalypse and footwear doesn't matter”。 |
说明 | 通常与 IF 和 IIF 一起使用。另请参见 NOT 和 或者。 如果两个表达式都为 如果所创建的计算中的 注意: |
语法 | CASE <expression>
|
输出 | 取决于 <then> 值的数据类型。 |
定义 | 对 |
示例 |
“看看“Season”字段。如果值为 Summer,则返回 Sandals。如果值为 Winter,则返回 Boots。如果计算中的选项均不匹配“Season”字段中的选项,则返回 Sneakers。” |
说明 | 提示:很多时候,您可以使用组来获得与复杂 CASE 函数相同的结果,或者使用 CASE 来替换本机分组功能,例如前面的示例。您可能想测试哪个更适合您的场景。 |
语法 | CASE <expression>
|
定义 | IF 或 CASE 表达式的一个可选部分,用于指定如果没有一个测试表达式为 true 则返回的默认值。 |
示例 | IF [Season] = "Summer" THEN 'Sandals' CASE [Season] |
说明 | 与 CASE、WHEN、IF、ELSEIF、THEN 和 END 一起使用
|
语法 | [ELSEIF <test2> THEN <then2>] |
定义 | IF 表达式的一个可选部分,用于指定初始 IF 之外的附加条件。 |
示例 | IF [Season] = "Summer" THEN 'Sandals' |
说明 |
与 |
定义 | 用于结束一个 IF 或 CASE 表达式。 |
示例 | IF [Season] = "Summer" THEN 'Sandals' “如果 Season = Summer,,则返回 Sandals。否则,请查看下一个表达式。如果 Season = Winter,则返回 Boots。如果两个表达式都不为 true,则返回 Sneakers。” CASE [Season] “看看“Season”字段。如果值为 Summer,则返回 Sandals。如果值为 Winter,则返回 Boots。如果计算中的选项均不匹配“Season”字段中的选项,则返回 Sneakers。” |
说明 |
语法 | IF <test1> THEN <then1> |
输出 | 取决于 <then> 值的数据类型。 |
定义 | 测试一系列表达式,同时为第一个为 true 的 |
示例 | IF [Season] = "Summer" THEN 'Sandals' “如果 Season = Summer,,则返回 Sandals。否则,请查看下一个表达式。如果 Season = Winter,则返回 Boots。如果两个表达式都不为 true,则返回 Sneakers。” |
说明 |
语法 | IFNULL(expr1, expr2) |
输出 | 取决于 <expr> 值的数据类型。 |
定义 | 如果 |
示例 | IFNULL([Assigned Room], "TBD") “如果“Assigned Room”(分配的房间)字段不为 null,则返回其值。如果“Assigned Room”(分配的房间)字段为 null,则返回 TBD。” |
说明 | 与 ISNULL 进行比较。 另请参见 ZN。 |
语法 | IIF(<test>, <then>, <else>, [<unknown>]) |
输出 | 取决于表达式中值的数据类型。 |
定义 | 检查是否满足条件(<test> ),并在 test 为 true 时返回 <then> ,在 test 为 false 时返回 <else> ,如果 test 为 null 则为可选值 <unknown> 。如果未指定可选的 unknown,IIF 将返回 null。 |
示例 | IIF([Season] = 'Summer', 'Sandals', 'Other footwear') “如果 Season = Summer,,则返回 Sandals。否则返回 Other footwear” IIF([Season] = 'Summer', 'Sandals', “如果 Season = Summer,,则返回 Sandals。否则,请查看下一个表达式。如果 Season = Winter,则返回 Boots。如果两者均不为 true,则返回 Sneakers。” IIF('Season' = 'Summer', 'Sandals', “如果 Season = Summer,,则返回 Sandals。否则,请查看下一个表达式。如果 Season = Winter,则返回 Boots。如果没有一个表达式为 true,则返回 Sneakers。” |
说明 |
也就是说,在下面的计算中,结果将是红色,而不是橙色,因为一旦 A=A 计算为 true,表达式就会停止计算:
|
语法 | <expr1> IN <expr2> |
输出 | 布尔值(True 或 False) |
定义 | 如果 <expr1> 中的任何值与 <expr2> 中的任何值匹配,则返回 TRUE 。 |
示例 | SUM([Cost]) IN (1000, 15, 200) “Cost 字段的值是 1000、15 还是 200?” [Field] IN [Set] “该字段的值是否存在于集合中?” |
说明 |
另请参见 WHEN。 |
ISDATE
语法 | ISDATE(string) |
输出 | 布尔值(True 或 False) |
定义 | 如果 <string> 为有效日期,则返回 true。输入表达式必须是字符串(文本)字段。 |
示例 | ISDATE("2018-09-22") “字符串 2018-09-22 是格式正确的日期吗?” |
说明 | 什么被视为有效日期取决于对计算求值的系统的区域设置(链接在新窗口中打开)。例如: 在美国:
在英国:
|
语法 | ISNULL(expression) |
输出 | 布尔值(True 或 False) |
定义 | 如果 |
示例 | ISNULL([Assigned Room]) “Assigned Room(分配的房间)字段是否为 null?” |
说明 | 与 IFNULL 进行比较。 另请参见 ZN。 |
语法 | MAX(expression) 或 MAX(expr1, expr2) |
输出 | 与参数相同的数据类型,或者,如果参数的任何部分为 null,则为 NULL 。 |
定义 | 返回两个参数(必须为相同数据类型)中的最大值。
|
示例 | MAX(4,7) = 7 |
说明 | 对于字符串
对于数据库数据源, 对于日期 对于日期, 作为聚合
作为比较
另请参见 |
语法 | MIN(expression) 或 MIN(expr1, expr2) |
输出 | 与参数相同的数据类型,或者,如果参数的任何部分为 null,则为 NULL 。 |
定义 | 返回两个参数(必须为相同数据类型)中的最小值。
|
示例 | MIN(4,7) = 4 |
说明 | 对于字符串
对于数据库数据源, 对于日期 对于日期, 作为聚合
作为比较
另请参见 |
语法 | NOT <expression> |
输出 | 布尔值(True 或 False) |
定义 | 对一个表达式执行逻辑非运算。 |
示例 | IF NOT [Season] = "Summer" “如果 Season 不等于 Summer,则返回 Don't wear sandals。否则,返回 Wear sandals。” |
说明 |
语法 | <expr1> OR <expr2> |
输出 | 布尔值(True 或 False) |
定义 | 对两个表达式执行逻辑析取操作。 |
示例 | IF [Season] = "Spring" OR [Season] = "Fall" “如果 (Season = Spring) 或 (Season = Fall) 为 true,则返回 Sneakers。” |
说明 | 通常与 IF 和 IIF 一起使用。另请参见 AND 和 NOT。 如果任一表达式为 如果所创建的计算中的 注意: |
语法 | IF <test1> THEN <then1>
|
定义 | IF 、ELSEIF 或 CASE 表达式的必需部分,用于定义如果特定值或测试为 true 则返回什么结果。 |
示例 | IF [Season] = "Summer" THEN 'Sandals' “如果 Season = Summer,,则返回 Sandals。否则,请查看下一个表达式。如果 Season = Winter,则返回 Boots。如果两个表达式都不为 true,则返回 Sneakers。” CASE [Season] “看看“Season”字段。如果值为 Summer,则返回 Sandals。如果值为 Winter,则返回 Boots。如果计算中的选项均不匹配“Season”字段中的选项,则返回 Sneakers。” |
说明 |
语法 | CASE <expression>
|
定义 | CASE 表达式的必需部分。查找第一个与 <expression> 匹配的 <value> ,并返回对应的 <then> 。 |
示例 | CASE [Season] “看看“Season”字段。如果值为 Summer,则返回 Sandals。如果值为 Winter,则返回 Boots。如果计算中的选项均不匹配“Season”字段中的选项,则返回 Sneakers。” |
说明 |
CASE <expression>
|
语法 | ZN(expression) |
输出 | 取决于 <expression> 的数据类型,或者为 0。 |
定义 | 如果 <expression> 不为 null,则返回该表达式,否则返回零。 |
示例 | ZN([Test Grade]) “如果测试成绩不为 null,则返回其值。如果测试成绩为 null,则返回 0。” |
说明 |
另请参见 ISNULL。 |
注意:其中一些实际上是逻辑运算符,显示为黑色,而不是蓝色。有关详细信息,请参见运算符语法。
按照下面的步骤进行操作以了解如何创建逻辑计算。
- 在 Tableau Desktop 中,连接到 Tableau 附带的示例 - 超市已保存数据源。
- 导航到工作表。
- 从“数据”窗格中,将“State”(州/省/市/自治区)拖到“行”功能区。
- 从“数据”窗格中,将“Category”(类别)拖到“行”功能区,并将其放在“State”(州/省/市/自治区)的右侧。
- 从“数据”窗格中,将“Sales”(销售额)拖到“列”功能区。
- 选择“分析”>“创建计算字段”。
- 在打开的计算编辑器中,执行以下操作:
- 将计算字段命名为“KPI”。
- 输入以下公式:
SUM([Profit]) > 0
此计算将快速检查某个成员是否大于零。如果大于零,则返回 true;否则返回 false。
- 完成后,单击“确定”。
- 从“数据”窗格中,将“KPI”拖到“标记”卡上的“颜色”。
您现在可以看到每个州/省/市/自治区的哪些类别在亏损。
新计算字段会显示在“数据”窗格中的“度量”下。就像其他字段一样,您可以在一个或多个可视化项中使用该字段。