屏幕截图如下。一个显示我的数据集。第二个显示了我想要计算的内容。我每天每口井有一条记录。有一个停机时间列可以告诉我在给定日中井的停机时间。我想计算连续几天的停机时间=停机时间= 24.如果计算遇到停机时间低于24小时的记录(按日期顺序),计算应该停止并返回空值,然后在停机时间=连续几天重新计算24.
然后我需要确定连续几天停机时间为60天或更长的日期块,以便我可以计算在给定月份内没有停机的井数。如果一口井有连续60天的连续停机时间超过三个月,我将从这三个月的井数中删除它。
答案 0 :(得分:1)
以下是一系列计算列,按连续顺序输入时,应达到预期效果。如果您愿意,可以将其中一些组合在一起,以便最终减少总列数。此外,我已根据您的单个样本数据集中的这些列,但我猜测您将拥有多个井,因此您必须将您的唯一ID合并到其中必要时的陈述。
DowntimeFlag = If([DownHours]=24,1,0)
DowntimeFlagCompare = SN(Avg([DowntimeFlag]) over (Previous([Date])),If([Date]=Min([Date]),if([DowntimeFlag]=1,1,0)))
ResetCounterFlag = If(([DowntimeFlag]<>[DateFlagCompare]) and ([DowntimeFlag]=1),1,If([Date]=Min([Date]),if([DowntimeFlag]=1,1,0),0))
CumResetCounter = Sum([ResetCounterFlag]) over (AllPrevious([Date]))
SpotfireCount = If([DowntimeFlag]=1,Sum([DowntimeFlag]) over (Intersect([CumResetCounter],AllPrevious([Date]))),null)
输入后,这就是数据表的样子: