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

问题描述 投票:0回答:1

我已经做出了一个案例声明,基本上告诉我何时在不同日期为不同的井打开/部分打开/关闭不同的区域。但这只是定期更改,因此我想将状态更改与以前的状态值一起保留在几个空值之间。理想情况下,我希望在与case语句相同的计算中使用该变量,但是您显然不能在其中使用循环参数,因此我可以创建一个新列来做到这一点,但是仍然无法填补空白。

下面是我的数据集的简化版本,当井下没有任何东西时,“ 1st”和“ 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'和'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 fill'和'如果需要,可以使用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表示它是空白的,其他任何东西都是端口大小,因此代码与简化数据示例不完全匹配。)

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

null fill spotfire
1个回答
0
投票

对于第一个填充尝试此操作,对于2a填充尝试相同的模式:

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

LastValidBefore采用当前值之前的最后一个有效值。SN在没有这样的有效值的地方(在开始时)将零放置。

Gaia

© www.soinside.com 2019 - 2024. All rights reserved.