计算时间序列数据中的月份数

时间:2015-09-21 21:30:04

标签: powerpivot powerbi

我正在处理的数据是石油和天然气生产数据。生产表唯一地标识每个井并包含生产值的时间序列。我希望能够计算包含生产表中每个井的生产月份数的列。这需要是一个计算,因此我可以根据生产月而不是日历月来绘制各种井的产量。 (我想比较油井寿命期间各井的良好性能。)另请注意,生产数据可能存在差距,因此您不能依赖每口井进行12个月的顺序生产。

我尝试使用这篇文章RankValues中的答案,但计算永远不会完成。我有超过400万行的生产数据。

在下面的表格中,ProdMonth中显示的值是我需要根据ProdDate中显示的时间来计算的。这需要作为每个唯一WellId的行计算执行

感谢。


WellID  ProdDate    ProdMonth
1       12/1/2011      1
1       1/1/2012       2
1       2/1/2012       3
1       3/1/2012       4
…         …            …
1       11/1/2012      12
2       3/1/2014       1
2       4/1/2014       2
2       5/1/2014       3
2       6/1/2014       4
2       7/1/2014       5
…         …            …
2       2/1/2014       12

2 个答案:

答案 0 :(得分:0)

我会创建一个新的日期表,每天有一行(数据的粒度)。然后我会在该表中添加ProdMonth列。这将确保您拥有所有日期的日期(即使井报告数据存在差距)。然后,您可以在ProdDate字段上使用油井生产数据和日期表之间的关系。然后,如果您从日期表中提取ProdMonth,您将获得所有ProdMonths的列表(提示:您可能需要在字段中的字段右键单击菜单中选择“显示没有数据的值”)。然后,如果您添加到相同的可视化WellID,您应该能够看到哪些井在ProdMonth中处于活动状态。如果WellID是一个数字,您可能需要使用WellID上的“不总结”功能来获得您想要的结果。

答案 1 :(得分:0)

我在PowerPivotPro上发布了这个问题,Tom Allan提供了我需要的DAX公式。第一步是计算连接年份和月份(YearMonth)的字段。然后使用RANKXX函数:

= RANKX(FILTER(数据,[WellID] = EARLIER([WellID])),[YearMonth] ,, 1,DENSE)

这样就可以在12毫米的行上快速完成。