在完成StackOverflow 和 PowerBI论坛上的几篇帖子后,我仍然无法弄清楚如何根据给定时间计算滚动平均值 - 在我的情况下,为期30天的滚动平均。
我见过的大多数帖子都提倡与此相同或非常相似的内容:
Rolling Sum :=
CALCULATE (
[Sales],
FILTER (
ALL ( Sales ),
[Date]
>= MAX ( Sales[Date] ) - 365
&& [Date] <= MAX ( Sales[Date] )
)
)
(代码取自this post)
......然而,我似乎无法获得正确的价值观。
就我而言,我有以下内容:
我想要计算的是任何一天的平均滚动30天。我编码如下:
Rolling Average =
CALCULATE (
SUM(Query1[Closing_Length])/[Loan Count],
FILTER (
ALL ( Query1 ),
[Closing Date].[Date]
>= MAX ( Query1[Closing Date] ) - 30
&& [Closing Date] <= MAX ( Query1[Closing Date] )
)
)
为了检查结果,我使用了一个可视化过滤器来检查一个月的数据,结果如下:
注意底部的总计行;在这一特定时期内,共有102笔贷款,总共需要3922天才能完成。我想计算的平均值是3922/102,应该等于大约38.45天。相反,我们看到了42.
我该如何解决这个问题?
答案 0 :(得分:3)
基于衡量标准的解决方案:
Rolling Average Measure =
VAR A =
SUMX (
FILTER (
ALL ( 'Query' ),
'Query'[Closing Date] <= MAX ( 'Query'[Closing Date] )
),
ROUND ( 'Query'[Closing Length], 2 )
)
VAR B =
SUMX (
FILTER (
ALL ( 'Query' ),
'Query'[Closing Date] <= MAX ( 'Query'[Closing Date] )
),
ROUND ( 'Query'[Loan Count], 2 )
)
RETURN
A / B
基于计算列的解决方案:
Rolling Average =
VAR CurrentDate = 'Query'[Closing Date]
VAR T =
FILTER ( 'Query', [Closing Date] <= CurrentDate )
RETURN
ROUND ( SUMX ( T, 'Query'[Closing Length] ) / SUMX ( T, [Loan Count] ), 2 )