Spotfire:用计算列中的先前值填充空值

Spotfire: Fill nulls with previous value in calculated column

我做了一个案例陈述,基本上告诉我不同​​区域在不同日期的不同井的时间是 open/partially open/closed。但这只会定期更改,因此我想与以前的状态值一起进行的状态更改之间有几个空值。理想情况下,我希望在与 case 语句相同的计算中进行计算,但您显然不能在那里使用循环参数,所以我可以创建一个新列来执行此操作,但我仍然无法填补空白.

下面是我的数据集的简化版本,当前输出在“1st”和“2a”列中return当井下没有任何东西时为 0,如果部分移植则为 0.5,并且如果它被消隐,则为 1。现在,如果那个月那个井没有变化,我只是在 return 的 case 语句中有一个 null。

Well  Date    Zone In  Size In  Zone Out  Size Out    1st   2a
101  1/2019                     2a        blank             0
101  2/2019
101  3/2019    2a       blank                               1
101  4/2019    1st      port                          0.5   
101  5/2019                                           
101  6/2019                                           
101  7/2019                      1st      port        0     

下面是我希望“1st”和“2a”列的状态。

Well  Date    Zone In  Size In  Zone Out  Size Out    1st   2a
101  1/2019                     2a        blank       0     0
101  2/2019                                           0     0
101  3/2019    2a       blank                         0     1
101  4/2019    1st      port                          0.5   1
101  5/2019                                           0.5   1
101  6/2019                                           0.5   1
101  7/2019                      1st      port        0     1

Well  Date    Zone In  Size In  Zone Out  Size Out    1st   2a  1st filled  2a filled
101  1/2019                     2a        blank             0   0           0
101  2/2019                                                     0           0
101  3/2019    2a       blank                               1   0           1
101  4/2019    1st      port                          0.5       0.5         1
101  5/2019                                                     0.5         1
101  6/2019                                                     0.5         1
101  7/2019                      1st      port        0         0           1

正如我之前所说,我对这些列使用了 case 语句,因为我得到的输入 zone/size 数据比我在这里显示的要复杂一些,所以有一个辅助 '如有必要,可以接受“第 1 次填充”和“2a 次填充”列。

..

如果有人 wants/needs 它,我当前在最简单区域中的案例陈述示例如下:

case    
when ([Zone In]="1st") and ([Port_Size In]=0) then 1   
when ([Zone In]="1st") and ([Port_Size In]!=0) then 0.5   
when [Zone Out]="1st" then 0  
else NULL  
end 

(在输入数据中,值为 0 表示它被消隐,其他都是端口大小,因此代码与简化数据示例不完全匹配。)

任何人都可以给我的任何帮助将不胜感激!!!如果您需要任何其他信息,请告诉我。

第 1 次填充尝试使用此方法,第 2 次填充采用相同的模式:

SN(LastValidBefore([1st]),0)

LastValidBefore 取当前值之前的最后一个有效值。 SN 在没有这样的有效值的地方(在开头)放一个零。

盖亚

我想我明白了!我将其用于“第一个填充”列。

SN(last([1st]) OVER (Intersect([Well],AllPrevious([Date]))),0)

非常感谢盖亚的启发!