【发布时间】:2019-09-02 15:36:03
【问题描述】:
这是我的问题。我正在尝试使用最后一个值计算每个月(滚动)的 3 个月平均值。
例如:
ID SCORE DATE
2 3 3/19
1 * 2 4/19
6 3 5/19 May(avg Mar,Apr,May) 3+*2+3+4/4 = 3
3 4 5/19
4 4 6/19 June(avg April May June) 3+4+4+*3+5/5= 3.8
1 * 3 6/19
6 5 6/19
所以 5 月的平均值将是 3 (12(Mar,Apr,May)/4) 并且 ID 1 Score=2 的值
但 6 月的平均值为 3.8(19(Apr,May,Jun)/5),ID 1 Score=3。
我试图遵循这个 https://community.powerbi.com/t5/Desktop/Rolling-3-Month-Average/m-p/695325#M335440) ,我需要的是过滤或仅传递用于求和的最新值的方法。
Rolling 3msc =
VAR PeriodEnd =
LASTDATE ( 'Table'[Date] )
VAR PeriodStart =
FIRSTDATE ( DATESINPERIOD ( 'Table'[Date], PeriodEnd, -3, MONTH ) )
RETURN
CALCULATE (
SUM ( 'Table'[Score] ),
DATESBETWEEN ( 'Table'[Date], PeriodStart, PeriodEnd )
) # what I need to figure out how to sum the score based
on the last score in this period
/ CALCULATE (
DISTINCTCOUNT ( 'Table'[ID] ),
DATESBETWEEN ( 'Table'[Date], PeriodStart, PeriodEnd )
)
【问题讨论】:
-
我猜你的问题是这些日期和时间函数中的大多数都需要一系列连续的日期。 IE。您需要创建一个包含所有日期的日历,从您的第一个数据日期到您的最后一个数据日期(至少)。在 Calendar 和数据表之间具有 1:* 关系并使用 Calendar[Date] 而不是 Table[Date]
-
您好,谢谢您的回答。我确实有一个单独的日期表。在这种情况下,我使用同一张表来获取最后三个月的值(所以最后一个日期来自数据集和前 3 个月)。这可以作为滚动平均值,但我不认为是日期限制的情况,而是子-将计算设置为仅获取最近的值以执行求和...我认为
-
我不确定我是否理解带星号的 [Score] 值的情况。 ID 1=3 是什么意思?
-
我想要达到的是用户最后得分的平均值。因此,5 月的 ID 1 分数将为 2(May(avg Mar,Apr,May) 3+*2+3+4/4 = 3),而在 6 月,ID 1 的分数将为 3 (6 月(4 月平均 5 月 6 月) 3+4+4+*3+5/5= 3.8)。因为两个 3 个月的平均值都会在计算中包含 4 月,但只考虑用户的最新分数作为总和。我设法通过在这个公式的最后部分使用 DISTINCTCOUNT 来实现其中的一部分,但我不知道如何将这个参数传递给 sum。