Spotfire - 如果自定义表达式在交叉表中包含具有over formula的Then关键字,如何进行除法

时间:2018-01-03 14:22:46

标签: spotfire

我正在尝试在Spotfire中实现计算。我正在尝试下面的表达,但它正在抛出一个错误。

Sum([Exp Increase]) / Sum([History]) * Sum([Prices]) THEN Sum([Value]) OVER (LastPeriods(4,[Axis.Columns])) / Sum([Prices]) OVER (LastPeriods(4,[Axis.Columns]))

我认为这是因为我试图对包含Over语句的“Then”关键字的表达式进行除法。

有人可以帮忙吗?我还附上了Spotfire工作文件。

谢谢, Sagar的

1 个答案:

答案 0 :(得分:1)

你的表达不起作用的原因是因为你在1个表达式中不能有超过1个OVER语句。

几个星期前我遇到了类似的问题...我的解决方案并不漂亮但是你走了:

1)将表达式前半部分的结果(即Sum([Exp Increase]) / Sum([History]) * Sum([Prices]) THEN Sum([Value]) OVER (LastPeriods(4,[Axis.Columns])))存储到计算列中(让我们先调用它)

2)重复w /后半部分(Sum([Prices]) OVER (LastPeriods(4,[Axis.Columns])))。让我们称之为secondHalf。

3)这里变得棘手。我在KPI中使用了我的计算列,所以它会自动为我做这些时期。所以我可以使用Avg(firstHalf)/Avg(secondHalf)并完成。但是,如果你不是,那么你可以尝试做Avg(firstHalf)/Avg(secondHalf) OVER (LastPeriods(4,[Axis.Columns]))之类的事情,看看是否有效。

Avg(...)的工作原因是因为您计算的列看起来像这样:

| Period   | firstHalf             |
|----------+-----------------------|
| 1        | 120                   |
|----------+-----------------------|
| 1        | 120                   |
|----------+-----------------------|
| 1        | 120                   |
|----------+-----------------------|
| 1        | 120                   |
|----------+-----------------------|
| 2        | 300                   |
|----------+-----------------------|
| 2        | 300                   |
------------------------------------

因此,获取特定月份的Avg()只会返回该月的值。