You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spotfire中计算累计油量:创建Final_Cum_Oil计算列的方法

Spotfire计算列:Final_Cum_Oil的正确表达式

问题原因

你原表达式的核心错误在于:当Cum_Oil_Actual非空时直接对其求和,这会把该油井历史所有实际累计值累加(比如Well a的1/3行,会计算5+10+20=35,而非直接取20),导致结果偏离预期。

正确逻辑应为:

  • 当Cum_Oil_Actual有值时,直接使用该值;
  • 当Cum_Oil_Actual为空时,基于该油井最后一个有效的实际累计值,加上后续日期的预测产量累计增量。

解决方案

直接创建名为Final_Cum_Oil的计算列,使用以下表达式:

If([Cum_Oil_Actual] IS NOT NULL, 
   [Cum_Oil_Actual], 
   Last(If([Cum_Oil_Actual] IS NOT NULL, [Cum_Oil_Actual])) OVER (Partition By [Well]) 
   + (Sum([Oil_Rate_Forecast]) OVER (Partition By [Well] Order By [Date] Rows Between Unbounded Preceding And Current Row) 
      - Last(If([Cum_Oil_Actual] IS NOT NULL, Sum([Oil_Rate_Forecast]) OVER (Partition By [Well] Order By [Date] Rows Between Unbounded Preceding And Current Row))) OVER (Partition By [Well]))
)

表达式拆解

  1. 非空值直接返回:如果Cum_Oil_Actual不为空,直接使用该实际累计值;
  2. 获取最后有效实际累计:通过Last(...) OVER (Partition By [Well])提取当前油井最后一个有实际累计的数值;
  3. 计算预测增量:
    • 先计算从油井第一行到当前行的预测产量累计和;
    • 减去最后一个有效实际累计对应的预测累计和,得到从该点到当前行的预测产量增量;
  4. 合并延续累计:用最后有效实际累计加上预测增量,得到延续后的累计值。

结果验证

代入你的测试数据后,该表达式将生成完全符合预期的Final_Cum_Oil列:

  • Well a的1/4行:20 + (10+10+10+20 - (10+10+10)) = 40;
  • Well b的1/5行:20 + (10+10+10+15+15 - (10+10+10)) = 50。

内容的提问来源于stack exchange,提问作者Cartman23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:55:13