计算Spotfire中同一列的时差

时间:2016-09-01 13:49:12

标签: time expression difference spotfire

我是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
运行代码后

:我的错误如下:

enter image description here

如果行与上一行具有相同的时间戳,则差异将与之前保持相同,但实际上具有相同时间戳的行的差异将为0

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

假设您的数据在导入之前按[timestamp]按升序排序,您可以使用Previous函数进行分区,其中Over位于[state]=1

使用以下表达式插入计算列:

If([state]=1,DateDiff("ss",Min([timestamp]) OVER (Previous([timestamp])),[timestamp]))

您将看到它填充在您的表格中,如下所示:

table

然后,如果你只想看到你提到的差异的行,你可以在桌子上......

Right Click > Properties > Data > Limit data using expression >

并插入表达式:[time_difference] > 1

这将产生此表:

table2