【问题标题】:DAX - How to sum a measure over the last N weeks, this year and last yearDAX - 如何对过去 N 周、今年和去年的度量值求和
【发布时间】:2020-04-25 00:41:41
【问题描述】:

我有一个度量值 [Total] 由 Date 表中的自定义周末结束日期字段“Date”[CustWEndingDate] 报告,基于周六至周五周(因此每周在周五结束)加上相关的“日期” '[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】:

    我会使用以下方法:

    1. 用今天的日期计算标量
    2. 用今天的年份计算标量
    3. 使用与今天的日期关联的 WeekNum 计算标量
    4. 用 CY 值计算今年最后 3 周的标量
    5. 用 PY 值计算上一年最后 3 周(相同)的标量
    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))
    

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

    【讨论】:

    • 两个后续问题:1.) 你能建议如何计算上面 1 到 5 中的标量,以及 2.) 与此相关,如何使标量动态化,以便用户可以指定 N周期间。在我最初的问题中,是 3 周。假设用户想要 4 或 5...
    • 您可以在 Joel's Measure 中找到该方法的实现。如果您的问题的这个答案,请将其标记为有效。我认为对于第二点,您可以提出一个新问题,因为它不仅与度量有关,还与数据模型本身有关,因此需要一个临时答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2020-07-21
    • 2020-05-09
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多