满足特定条件的值在同一个库中的行之间的差异

时间:2018-11-29 14:10:31

标签: spotfire tibco

这是我的输入和期望的输出。问题是:我有一个用于产品,价格和日期的列,我想建立一个交叉表,从中可以看到每种产品前一天的价格。

如何计算数据表中的d-1列(第1天)?我应该使用相交/上方功能吗?如果我想在交叉表中即时计算d-1列怎么办?

enter image description here

1 个答案:

答案 0 :(得分:0)

这里有一些选项,具体取决于您要如何显示所有内容。

如果您只想了解它在今天和昨天之间的变化情况的总体快照,那么可能最简单的操作如下:

Avg(If([DATE]=Date(DateTimeNow()),[Price],NULL)) as [Today's Price], 
Avg(If([DATE]=Date(DateAdd("day",-1,DateTimeNow())),[Price],NULL)) as [Yesterday's Price], 
Avg(If([DATE]=Date(DateTimeNow()),[Price],NULL)) - Avg(If([DATE]=Date(DateAdd("day",-1,DateTimeNow())),[Price],NULL)) as [d-1]

这对于仪表板或摘要非常有用,如果将“ DateTimeNow”组件替换为由“输入”字段控制的文档属性,则可以快速向用户显示特定日期的更改。


Over函数仍然可能非常有用,尤其是当您使用某种形式的日期层次结构时。
它会即时更新,以适应顶部的分组列,因此,如果按日期显示,则可以看到每天的变化,而如果按月显示,则可以这样查看

Avg([Price]) as [Avg Price], 
Avg([Price]) - Avg([Price]) OVER (PreviousPeriod([Axis.Columns])) as [Avg Price Change]