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