我正在努力在 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"
我该如何去做呢?请指教。
IF (NOT ISNULL([test2])) AND [test2] < [minimum]
THEN [minimum] - [test2]
ELSEIF (NOT ISNULL([test2])) AND [test1] < [minimum]
THEN [minimum] - [test1]
END
如果你知道 ISNULL 函数就不那么难了
在这种情况下,测试 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()。