含有空值的计算问题:使用ifnull还是if isnull?
大多情况下,使用Tableau计算时,会自动忽略空值进行计算。但你将聚合后的值进行加减乘除的运算时会发现,如果聚合后的值有空值,那么运算结果也是空(因为空值不能进行基础运算),ifnull和isnull函数应运而生。
ifnull(字段名,返回值),两个参数,一个是判断是否为空的字段,另一个是如果是空值要返回的值。这个函数代表了,如果字段不是空值,就返回原字段的值,如果为空,就返回第二个参数规定的值。例如:ifnull(A,0)+ifnull(B,0),代表如果A,B均不为空,结果为:A+B;如果其中一个为空,结果则为另一个字段的值;如果两个均为空值,则结果为“0”。
isnull(字段名),返回布尔值,只能判断是否为空,一般和 IF 判断语句连用。以上ifnull函数存在一个问题就是,如果A,B均为空,我更希望返回为空值,而不是零,这一点使用IF判断语句更好实现一些:
IF isnull(A) then B elseif isnull(B) then A else A+B END
具体使用哪一个函数需要根据具体要求来选择
含有空值的显示问题
作图时,我们往往有一个维度选择,但维度中的某几个值一旦是空值时,大都会在图上显示出有null值,点击指示器上的null值标记会提示我们选择:筛选数据 或者 在默认位置显示 。筛选会将null值所在的维度筛选出去,默认位置显示一般是显示在0值上,具体根据实际需求进行选择。如果指示器未提示,则可以在度量值字段上进行“区-特殊值”的设置,有四个选项,可以根据具体业务要求进行设置。