【问题标题】:DAX formula for sales sum for each day of previous n days前 n 天中每一天的销售额总和的 DAX 公式
【发布时间】:2020-10-27 14:30:15
【问题描述】:

在 Power BI 中给定一个表 FACT,其中包含三列 DateCategorySales 我正在寻找一个 DAX 函数,每天返回其前 n 天的销售额总和。
让我们假设 n = 2,这意味着对于 2020 年 1 月 4 日,我的度量应该返回 2020 年 1 月 2 日和 2020 年 1 月 3 日的销售额总和。 这是一个小例子:

Date        Category  Sales 
01/01/2020  A         1
01/01/2020  B         3
01/02/2020  B         2
01/03/2020  B         1
01/04/2020  A         0
01/05/2020  B         10
01/06/2020  B         7

我想要的是

Date        MyMeasure 
01/01/2020  0 
01/02/2020  4
01/03/2020  6
01/04/2020  3
01/05/2020  1
01/06/2020  10

我稍后想使用类别作为过滤器,在我的例子中 n 是 365。

我尝试了以下

MyMeasure = 
VAR FROM_DATE =
    DATEADD ( FACT[DATE], 0, DAY )
VAR SALES_365 =
    CALCULATE (
        SUM ( FACT[SALES] ),
        DATESINPERIOD ( FACT[DATE], FROM_DATE, 365, DAY )
    )
RETURN
    SALES_365

但得到一个错误,即在需要单个值的地方提供了一个包含多个值的表。

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    错误出现在变量 FROM_DATE 中,其中 DATEADDD 返回一列日期而不是单个值。 也就是说,您实际上并不需要变量,您只需使用简单的减法和DATESBETWEEN(DateCol, DateFrom,DateTo)

    MyMeasure = 
    CALCULATE (
        SUM ( FACT[SALES] ),
        DATESBETWEEN('FACT'[DATE],MAX(FACT[DATE])-2,MAX(FACT[DATE])-1)
    )
    

    【讨论】:

    • 您建议的解决方案会导致错误“MAX 函数仅接受列引用作为参数。”所以这不起作用。
    • 我的错,我没有注意到 FROM_DATE 是什么。我将编辑答案,问题与 DATEADD 返回日期列表而不是单个值相同
    • 很好用,谢谢。即使我希望这个公式每天返回相同的值,因为 MAX(FACT[DATE]) 始终是当前日期。不是吗?您能否解释一下,为什么 MAX(FACT[DATE]) 似乎在其上下文中指代每一天?
    • 这是因为您在表格中显示日期,因此每一行的“上下文”都会发生变化。只需将以下措施放入表中即可查看返回结果DateFrom=MAX(FACT[DATE])-2DateTo=MAX(FACT[DATE])-1
    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2020-09-09
    相关资源
    最近更新 更多