我是Spotfire的初学者。我有一些关于某些列值的差异计算的问题。样本表可以是这样的:
id timestamp state
1 7/1/2016 12:00:01 AM 1
2 7/1/2016 12:00:03 AM 0
3 7/1/2016 12:00:04 AM 1
4 7/1/2016 12:00:06 AM 0
5 7/1/2016 12:00:09 AM 1
6 7/1/2016 12:00:10 AM 0
7 7/1/2016 12:00:12 AM 1
我想计算状态为1时的时间戳的时间差, 我想要的决赛桌是:
id timestamp state time_diffence
3 7/1/2016 12:00:04 AM 1 3
5 7/1/2016 12:00:09 AM 1 5
7 7/1/2016 12:00:12 AM 1 3
似乎我应该为计算确定一个表达式,但我不知道只计算一个参数的计算:(。有人可以帮助我吗?
还有一个小问题:如果时间戳列值只是数值,如何计算差值,这里有任何相关的函数,比如DateDiff()吗?例如:
id times state
1 12 1
2 7 0
3 10 1
4 11 0
5 6 1
6 9 0
7 7 1
结果可能是:
id times state diffence
3 10 1 -2
5 6 1 -4
7 7 1 1
运行代码后:我的错误如下:
如果行与上一行具有相同的时间戳,则差异将与之前保持相同,但实际上具有相同时间戳的行的差异将为0
感谢您的帮助:)
答案 0 :(得分:1)
假设您的数据在导入之前按[timestamp]
按升序排序,您可以使用Previous
函数进行分区,其中Over
位于[state]=1
。
使用以下表达式插入计算列:
If([state]=1,DateDiff("ss",Min([timestamp]) OVER (Previous([timestamp])),[timestamp]))
您将看到它填充在您的表格中,如下所示:
然后,如果你只想看到你提到的差异的行,你可以在桌子上......
Right Click > Properties > Data > Limit data using expression >
并插入表达式:[time_difference] > 1
这将产生此表: