滚动/移动平均值按月计算

时间:2015-08-03 20:27:21

标签: business-intelligence powerpivot dax

希望获得3年内特定月份的移动平均数和总和年数,而不是每月滚动平均数。我希望看到我们多年来的月度业务趋势,并希望将平均值作为基准。

即:

  • 2011年1月,2012年1月,2013年1月等

  • 2011年2月,2012年2月,2013年2月等

到目前为止,我所能做的就是从选定年份获得3年的SUM,即使这样。

例如:选定的月份= 2013年1月,汇总包括2011年2月至2013年1月的所有月份。相反,我需要在那些年份的1月份。

尝试了日期措施:

CALCULATE([total], DATESINPERIOD(Time[Pk_Date], LASTDATE(Time[PK_Date]),-3,Year ) )

目标是从选定的年份推迟3年

  • 一月
    • 2011:50
    • 2012:55
    • 2013:53
    • 2014:57
    • 2015:47

在此方案中,滚动平均值和运行总计应为:

2013 avg = 53 | sum = 158

2014 avg = 55 |总和= 165

2015 avg = 52 | sum = 157

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

您已经非常接近,您错过了额外的过滤器,可以将您选择的日期时间过滤到所选的月份数。

首先,确保日期表中有月份编号的列。我们假设它被称为MonthNumber

接下来,创建一个度量来捕获您选择的月份。

ChosenMonth :=
MAX ( Time[MonthNumber] )

由于数据透视表中的每一行都有一个月,因此只会将该月作为一个度量返回,以便您可以在以后的计算中使用它。您也可以使用SUM()MIN()等,因为只有一个值。

RollingAverage :=
CALCULATE (
    [Total],
    DATESINPERIOD (
        Time[PK_Date],
        LASTDATE ( Time[PK_Date] ),
        -3,
        YEAR
    ),
    FILTER (
        VALUES ( Time[MonthNumber] ),
        Time[MonthNumber] = [ChosenMonth]
    )
)

这就是为所选月份等事情创建中间隐藏度量的重要性,因此您可以在DAX真正没有相应调整的日期中重新应用该上下文