我正在尝试在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的
答案 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()只会返回该月的值。