计算 Spotfire 中同一列的时间差

calculate the time difference for same column in Spotfire

我是 Spotfire 的初学者。我对某些列值的差异计算有疑问。示例 table 可能是这样的:

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时时间戳的时间差, 最后 table 我想要的是:

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

看来我应该确定一个用于计算的表达式,但我不知道如何计算一个参数:(。有人可以帮我吗?

还有一个小问题:如果timestamp列的值只是number值,如何计算差值,这里有没有类似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

感谢您的帮助:)

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

使用此表达式插入计算列:

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

您会看到它填充在您的 table 中,如下所示:

然后,如果您只想查看与您提到的不同的行,在您的 table 上,您可以...

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

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

这将导致 table: