3个月的滚动平均值和最终值

时间:2019-08-30 10:14:43

标签: powerbi dax

这是我的问题。我正在尝试计算每个月(滚动)的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

因此,五月平均值将为3(12(三月,四月,五月)/ 4),ID为1的值= 2

但在6月,平均值将是3.8(19(4月,5月,6月)/ 5),ID 1得分的值= 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 )
)

1 个答案:

答案 0 :(得分:0)

microsfot中的示例不正确,您可以添加一列:

Rolling 3msc = 
    var periodEnd = LASTDATE(DATESINPERIOD(AveMonths[DATE];AveMonths[DATE];1;MONTH))
    var periodStart = FIRSTDATE(DATESINPERIOD(AveMonths[DATE];periodEnd;-3;MONTH))
    return 
        CALCULATE(AVERAGE(AveMonths[SCORE]);
             FILTER(AveMonths; AveMonths[DATE] >= periodStart && AveMonths[DATE] <= periodEnd)) 

最终结果:

enter image description here

在这里您可以看到4月的平均值是(3 + 2 + 4)/ 3 =3。(3月+ 4月+ 5月)。

您在一个月中拥有多少值都无所谓,它仍然可以计算出平均值。