Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Null Spotfire:使用计算列中的上一个值填充空值_Null_Fill_Spotfire - Fatal编程技术网

Null Spotfire:使用计算列中的上一个值填充空值

Null Spotfire:使用计算列中的上一个值填充空值,null,fill,spotfire,Null,Fill,Spotfire,我已经做了一个案例陈述,基本上告诉我在不同的日期不同的井的不同区域何时开放/部分开放/关闭。但这只是周期性的改变,所以在状态改变之间有几个空值,我想与前一个状态的值结转。理想情况下,我希望在与case语句相同的计算中使用它,但是你显然不能在这里使用循环参数,所以我可以创建一个新的列来实现这一点,但我仍然无法填充空白 下面是我的数据集的简化版本,“1st”和“2a”列中的当前输出,当井下无任何东西时返回0,如果部分端口,返回0.5,如果被屏蔽,返回1。现在,我只需要在case语句中返回一个null

我已经做了一个案例陈述,基本上告诉我在不同的日期不同的井的不同区域何时开放/部分开放/关闭。但这只是周期性的改变,所以在状态改变之间有几个空值,我想与前一个状态的值结转。理想情况下,我希望在与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

正如我之前所说的,我对这些列使用了一个case语句,因为我给出的输入区域/大小数据比我在这里显示的要复杂一些,所以如果需要,可以使用第二个“第一个填充”和“第二个填充”列

如果有人想要/需要,下面是我在最简单区域中当前案例陈述的一个示例:

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]),0)

LastValidBefore获取当前值之前的最后一个有效值。 SN在没有此类有效值的情况下(在开始时)置零


盖亚

我想我明白了!我将此用于“第一次填充”列

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

非常感谢你给了盖亚灵感

成功了!天哪,我可以发誓我已经试过很多次了,但我猜我的语法不对。唷!我知道这应该很容易,非常感谢你!:)只是开玩笑。这种方法很有效。但它没有考虑到不同油井的交叉。当它从一口井过渡到另一口井时,它只是继续上一口井的数据,我遇到了同样的问题,即无法使用SN函数的over或聚合方法。不幸的是,给出的示例没有准确反映问题(仅显示了一口井)
SN(last([1st]) OVER (Intersect([Well],AllPrevious([Date]))),0)