IF vs IIF和性能差异?

时间:2017-01-10 19:33:08

标签: performance tableau

我想知道Tableau中IF语句与IIF()函数之间的区别是什么。然后我找到了这个页面,它解释了语法差异。

Difference between iif and if

但有人(在研讨会上)也告诉我IIF()表现更好。这是真的吗?

2 个答案:

答案 0 :(得分:1)

声明 vs。功能

IFIIF之间的关键区别在于前者是 声明

IF test THEN value END 
IF test THEN value ELSE else END 

后者是一个功能

IIF(test, then, else, [unknown])

cited link in the opening question中提到的另一个区别是,后者也支持。the documentation from Tableau 单独处理“未知”案件的概念 这是writetime()

  

IIF(测试,然后,否则,[未知])

     

。 。

     

布尔比较也可能产生UNKNOWN值(均为TRUE   通常由于测试中存在Null值而导致FALSE)。该   如果发生UNKNOWN结果,则返回IIF的最终参数   为了比较。如果遗漏了这个参数,则返回Null。

IF语句中,未知案例的处理被集中到ELSE块中。来自同一份文件 来自上面引用的Tableau

  

IF THEN ELSE函数评估一系列测试条件和   返回第一个条件为true的值。如果没有条件,则返回ELSE值。

关于效果差异的声明

关于两种结构之间性能差异的说法, 我对索赔进行了调查:

  1. 我进行了一些搜索,我无法通过Tableau或其他用户正式找到证据支持。
  2. 我进行了一项小型(轶事)实验,我无法观察到任何表现 差异(我的测试涉及来自CSV文件的300MB的数据集并且具有 其中有3.6M行,两种方法的执行速度彼此相同)。
  3. Tableau的员工告诉我这个说法似乎已经兜售了  我再次问她同样的问题,以便确认。
  4. 所以我会将声明分类为未经证实。

答案 1 :(得分:0)

这是区别: IF(Condition,“ truevalue”,IIF(Condition,“ truevalue”,“ falsevalue”))-如果该语句看到null值,则将返回“ falsevalue”。

IIF(条件,“真值”,IIF(条件,“真值”,“假值”),“无值”)-此函数将看到空值并返回“无值”。