首页 > 解决方案 > Spotfire 中是否有一个滞后函数可以获取小时列的先前值?

问题描述

我的数据看起来像这样

Date       Hour
8/8/2017   23
8/9/2017   00
8/9/2017   01
8/9/2017   02
8/9/2017   03
8/9/2017   04
8/9/2017   05
8/9/2017   06
8/9/2017   07
8/9/2017   08
8/9/2017   09
8/9/2017   10
8/9/2017   11
8/9/2017   12
8/9/2017   13
8/9/2017   14
8/9/2017   15
8/9/2017   16
8/9/2017   17
8/9/2017   18
8/9/2017   19
8/9/2017   20
8/9/2017   21
8/9/2017   22
8/9/2017   23

我想在这里使用与滞后函数类似的逻辑来获取前一小时的列。我已经为计算列尝试了以下 Spotfire 表达式:

First([Hour]) OVER Intersect([Date],Previous([Hour]))

但是,这并没有给我 00 小时的先前值,以下是结果

Date       Hour  PrevHour
8/8/2017   23    22
8/9/2017   00    
8/9/2017   01    00
8/9/2017   02    01
8/9/2017   03    02   
8/9/2017   04    03
8/9/2017   05    04
......

如何使 00 的前一小时成为上一个日期的 23?

标签: spotfire

解决方案


我想出了一个解决方案来解决这个问题,我把它贴在这里,以防有人有一天会遇到同样的问题。

  1. 按日期然后按小时列对数据进行排序
  2. 使用自定义表达式 = RowId() 在 Spotfire 中创建新的 ID 计算列
  3. 使用以下自定义表达式创建 PrevHour 计算列 = First([Hour]) OVER Previous([ID])

这解决了我的问题。


推荐阅读