我试图在一个非常简单的表上获得运行平均值,但平均值依赖于各种分组列。无论我尝试什么,平均值都将与当前值相同。仅当我删除表中除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
预先感谢
约翰
答案 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个。
注意:当您有更多年时,此功能将无效。我建议您从月/年列中创建日期,并使用与上面相同的方法。