Spotfire:用计算列中的上一个值填充null



我做了一个案例陈述,基本上是告诉我不同日期不同井的不同区域何时打开/部分打开/关闭。但这只是周期性的变化,所以在状态变化之间有几个空值,我想用以前的状态值继续下去。理想情况下,我希望将其与case语句进行相同的计算,但你显然不能在那里使用循环参数,所以我可以创建一个新列来完成这项工作,但我仍然难以填补空白。

下面是我的数据集的简化版本,"1st"one_answers"2a"列中的当前输出在井下没有任何东西时返回0,如果部分端口,则返回0.5,如果为空白,则返回1。现在,如果当月该井没有变化,我只需要在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"one_answers"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语句,因为我得到的输入区域/大小数据比我在这里显示的要复杂一些,所以如果必要的话,可以使用辅助的"1st填充"one_answers"2a填充"列。

如果有人想要/需要它,我目前最简单的案例陈述示例如下:

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意味着它被清空,其他任何东西都是端口大小,因此代码与简化数据示例不完全匹配。(

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

第一次填充时试试这个,2a填充时试试相同的模式:

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

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

盖亚

我想我想通了!我在"第一次填充"栏中使用了这个。

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

非常感谢你给盖亚的灵感!

相关内容

  • 没有找到相关文章

最新更新