首页 文章

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

提问于
浏览
1

希望获得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 回答

  • 2

    您非常接近,您只是错过了额外的过滤器来过滤您选择的日期时间到所选的月份数 .

    首先,确保's a column for the month number in your date table. Let'假设它被称为 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真正没有相应调整的日期集合中查找该上下文 .

相关问题