最近x个月的运行平均值

时间:2019-03-27 17:18:30

标签: powerbi

我试图在一个非常简单的表上获得运行平均值,但平均值依赖于各种分组列。无论我尝试什么,平均值都将与当前值相同。仅当我删除表中除1以外的所有相关列时,它才“起作用”。一旦我重新添加它们并将摘要更改为“不总结”,它就会再次中断。

我的表格基本上有4列。公司编号,付款次数,月份,年份。我想要做的就是获得该公司当月和前两个月的平均值。

示例数据

CompanyNo, Payments, TaxMonth, TaxYear  
1,100,1,2018  
1,200,2,2018  
1,300,3,2018  
2,100,1,2018  
2,500,2,2018  
2,1000,3,2018  

我还添加了一个名为“ FullDate”的计算列,以尝试无忧地帮助我

FullDate = DATE(SQL_MonthlyData[TaxYear], SQL_MonthlyData[TaxMonth], 1)

我现在只是试图将数据输出到表中。

这是我目前平均三个月的收入。

3MonthAverage = 
    CALCULATE(
        SUM('SQL_MonthlyData'[Payments]),
            DATEADD('SQL_MonthlyData'[FullDate].[Date], -3, MONTH)
        )

两个问题。首先,当我在表中有companyNo,TaxMonth,TaxYear时,平均值总是返回“ Payments”值。如果我对taxMonth和TaxYear求和/求平均值,则可以正常工作,但是如果没有将这两列都设置为“不汇总”,则数据将毫无意义。

3MonthAverage = 
        CALCULATE(
            SUM('SQL_MonthlyData'[Payments]),
            DATEADD('SQL_MonthlyData'[FullDate].[Date], -3, MONTH)
        )

预期结果

CompanyNo TaxMonth TaxYear Payments 3MonthAvg  
1         1        2018    100      100  
1         2        2018    200      150            
1         3        2018    300      200  
1         4        2018    400      300   
2         1        2018    100      100  
2         2        2018    500      300  
2         3        2018    1000     533.33  

预先感谢

约翰

1 个答案:

答案 0 :(得分:0)

希望这会有所帮助:添加一列,例如:

3MonthAvg = CALCULATE(AVERAGE(Sheet1[ Payments]);FILTER(Sheet1;Sheet1[CompanyNo] = EARLIER(Sheet1[CompanyNo]) && Sheet1[ TaxMonth]<=EARLIER(Sheet1[ TaxMonth]) && Sheet1[ TaxMonth] + 3 > EARLIER(Sheet1[ TaxMonth])))

此技巧在EARLIER中,用于检查是否还有其他行确认该条件:同一家公司和一个早期月份,但最多3个。

注意:当您有更多年时,此功能将无效。我建议您从月/年列中创建日期,并使用与上面相同的方法。