在 spotfire 中求和

Sum on spotifre

我尝试在 Spotfire 上比较数组中的两个表达式 但他们没有给我相同的结果,我不明白为什么从数学的角度来看。

Sum([OUTS_P] - [OUTS_P2])
Sum([OUTS_P]) - Sum([OUTS_P2])

您知道这两种操作在哪种情况下可能不同吗?

举个例子table:

A    B
1    3
2    2
3    1

我们有这两个结果:

Sum([A]) - Sum([B]) = Sum(1, 2, 3) - Sum(3, 2, 1) = 6 - 6 = 0

Sum([A] - [B]) = Sum( (1 - 3), (2 - 2), (3 - 1) ) = Sum(-2, 0, 2) = 0

这就是您所期望的,这将在 100% 的时间内起作用。

除非,当然,你的table类似于这个:

A    B
1    3
2    
3    1

B:2NULL(Empty)。此 table 导致表达式被评估为:

Sum([A]) - Sum([B]) = Sum(1, 2, 3) - Sum(3, 1) = 6 - 4 = 2

Sum([A] - [B]) = Sum( (1 - 3), (3 - 1) ) = Sum(-2, 2) = 0

原因是因为NULL是非数字的;无法评估 2 - NULL,并且此数据被 Sum().

忽略

如果您希望两个表达式始终得到相同的答案,您可以为将在 Sum() 中使用的每一列创建一个这样的计算列:

If([Column] is NULL, 0, [Column])

然后在此列而不是原始列上聚合。