Tableau 8.2 带有 If thens 的计算字段

问题描述 投票:0回答:2

我正在努力在 Tableau 8.2 中创建一些计算字段。

“test2”字段的数据是从 Access 导入的。它们可以是数字或文本中的“空”。

我还有字段“test1”、“最小值”和“最大值”。 “test1”、“最小值”和“最大值”只是数字。

我想用 if 语句创建一个计算字段。

计算字段的名称是“answer”。

我想做以下事情:

1)如果“test2”不为“Null”且“test2”< "minimum" then calculate "minimum" - "test2".

(我使用语法 IIF 和 != 表示不等于,但它不喜欢它,因为“Null”是一个字符串值)

2) 否则如果“test2”不为“Null”且“test1”< "minimum" then calculate "minimum" - "test1"

我该如何去做呢?请指教。

field tableau-api
2个回答
0
投票
IF (NOT ISNULL([test2])) AND [test2] < [minimum]
THEN [minimum] - [test2]
ELSEIF (NOT ISNULL([test2])) AND [test1] < [minimum]
THEN [minimum] - [test1]
END

如果你知道 ISNULL 函数就不那么难了


0
投票

在这种情况下,测试 null 是多余的(不必要)。

引用具有空值的字段的 if 条件计算结果为 false。这与 Java 编程不同。在大多数情况下,在引用字段之前不必测试字段是否为空值。有用的是,像 min()、max()、sum()、count() 等聚合函数完全忽略空值。

不必要的空测试使公式难以阅读,并且很容易隐藏拼写错误。假设您在上面的第二个测试中指的是 test1 而不是 test2,那么您的计算字段只需要说明:

if test2 < minimum then
  minimum - test2
elseif test1 < minimum then
  minimum - test1
end

Inox 是正确的,当您确实需要显式测试 null 值时,要使用的函数是 isnull(),或者在某些情况下 ifnull() 或 zn()。

© www.soinside.com 2019 - 2024. All rights reserved.