【问题标题】:Rolling/Moving average by month over years多年来按月滚动/移动平均
【发布时间】:2015-08-03 20:27:20
【问题描述】:

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

即:

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

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

到目前为止,我所能做的就是从选定的年份中获得 3 年的总和,即使这样也是关闭的。

例如:选定月份 = 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 年平均 = 53 |总和 = 158

2014 年平均 = 55 |总和 = 165

2015 年平均 = 52 |总和 = 157

任何帮助表示赞赏!

【问题讨论】:

    标签: business-intelligence powerpivot dax


    【解决方案1】:

    您非常接近,您只是错过了额外的过滤器,用于将您选择的日期段过滤到所选月份。

    首先,请确保您的日期表中有月份编号列。假设它被称为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 确实没有同等条件的一组日期上重新应用该上下文。

    【讨论】:

      猜你喜欢
      • 2014-12-25
      • 2015-01-18
      • 1970-01-01
      • 2013-12-22
      • 2021-05-08
      • 2014-11-29
      • 2019-12-16
      相关资源
      最近更新 更多