Spotfire:Sum()OVER(Previous())在与If()语句一起使用时消隐第二个节点

时间:2016-04-29 15:54:58

标签: spotfire

我遇到的情况是,我的表格如下所示:

Year   Sales
2000   100
2001   225
2002   375
2003   490
...

我想做的是:

  • 如果是第一个值,请输入我选择的值
  • 如果它不是第一个值,请计算先前销售额值与此销售额值之间的差额

这是我想要实现的目标:

Year   Sales   NewColumn
2000   100     50        <For now, use Sales * 0.5>
2001   225     125
2002   375     150
2003   490     115
...

这是我在自定义列中使用的自定义表达式:

If(
  Sum([Net Sales]) over (Previous([Year])) is null,
  (Sum([Net Sales]) over ([Year])) * 0.5,
  ([Sales] - Sum([Sales]) over (Previous([Year]))) 
)

但是,这是我的公式返回的内容:

Year   Sales   NewColumn
2000   100     50      
2001   225     <seems to be blank>
2002   375     150
2003   490     115
...

现在,我对此感到困惑:查看第一个节点时Previous语句将返回null。所以如果我跑([Sales] - Sum([Sales]) over (Previous([Year]))),我会得到:

Year   Sales
2000   
2001   225
2002   375
2003   490
...

...但是当我将这个逻辑与if语句结合起来时,似乎所有事情都被“移位”了一行。关于我(明显)误解在这里的任何想法?为什么Previous的焦点显然会向下移动一行?

(为清楚起见,这可以延伸到我之前的SO帖子:link

1 个答案:

答案 0 :(得分:0)

问题在于你的if语句。它排除了Sum([Sales])over(Previous([Year]))的行集,其中Sum([Sales])over(Previous([Year]))不为null。

我会使用SN([Sales] - Sum([Sales])超过(Previous([Year])),Sum([Sales])超过([Year])* 0.5。