在 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:2
是 NULL
或 (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])
然后在此列而不是原始列上聚合。
我尝试在 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:2
是 NULL
或 (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])
然后在此列而不是原始列上聚合。