首页 > 解决方案 > DAX - 如何对过去 N 周、今年和去年的度量值求和

问题描述

我有一个度量 [Total] 由 Date 表中的自定义周末结束日期字段 'Date'[CustWEndingDate] 报告,基于周六 - 周五周(因此每周在周五结束),加上相关的 'Date'[WeekNum ] 和 'Date'[Year] 到那个。数据如下所示:

[CustWEndingDate], [Year], [WeekNum], [Total]
3/29/2019, 2019, 13, 400
4/5/2019, 2019, 14, 350
4/12/2019, 2019, 15, 420
4/ 19/2019, 2019, 16, 390
...
3/27/2020, 2020, 13, 315
4/3/2020, 2020, 14, 325
4/10/2020, 2020, 15, 405
4/17/2020 , 2020, 16, 375

我的问题是:如何创建 DAX 度量来计算今年最后 3 周与去年相同的最后 3 周?例如,今年第 14 周、第 15 周和第 16 周 (325+405+375) 与去年同一周的第 14 周、第 15 周和第 16 周 (350+420+390)?

提前感谢您提供的任何帮助!

标签: dax

解决方案


我会使用以下方法:

  1. 用今天的日期计算标量
  2. 用今天日期的年份计算标量
  3. 计算与今天日期关联的 WeekNum 的标量
  4. 用 CY 值计算今年最后 3 周的标量
  5. 计算上一年最后 3 周(相同)的 PY 值的标量
  6. 计算比率

下面是技术实现:

Joel's Measure:=
    VAR _TODAY = TODAY()
    VAR _YEAR = YEAR(_TODAY)
    VAR _WEEKNUM = CALCULATE(MIN('Date'[WeekNum]), 'Date'[Date] = _TODAY)
    VAR _CY = CALCULATE([MEASURE], 'Date'[Year] = _YEAR, 'Date'[WeekNum] IN {_WEEKNUM, _WEEKNUM - 1, _WEEKNUM - 2}) 
    VAR _PY = CALCULATE([MEASURE], 'Date'[Year] = _YEAR - 1, 'Date'[WeekNum] IN {_WEEKNUM, _WEEKNUM - 1, _WEEKNUM - 2}) 
    RETURN
    DIVIDE(_CY - _PY, ABS(_PY))

这应该可以解决您的问题。如果没有,请与结果分享反馈。


推荐阅读