Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 前n天每天的销售总额的DAX公式_Powerbi_Dax - Fatal编程技术网

Powerbi 前n天每天的销售总额的DAX公式

Powerbi 前n天每天的销售总额的DAX公式,powerbi,dax,Powerbi,Dax,给定Power BI中有三列Date、Category和Sales的表FACT,我正在寻找一个DAX函数,该函数每天返回前n天的销售额总和 假设n=2,这意味着对于2020年4月1日,我的度量值应返回2020年2月1日和2020年3月1日的销售额之和。 下面是一个小例子: Date Category Sales 01/01/2020 A 1 01/01/2020 B 3 01/02/2020 B 2 01/03/2020

给定Power BI中有三列Date、Category和Sales的表FACT,我正在寻找一个DAX函数,该函数每天返回前n天的销售额总和
假设n=2,这意味着对于2020年4月1日,我的度量值应返回2020年2月1日和2020年3月1日的销售额之和。 下面是一个小例子:

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

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

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


您建议的解决方案导致错误“MAX函数只接受列引用作为参数”。因此,这不起作用。我的错,我没有注意到起始日期是什么。我将编辑答案,问题与DATEADD相同,返回一个日期列表,而不是一个值很好,谢谢。即使我希望这个公式每天都返回相同的值,因为MAX(事实[DATE])总是当前日期,不是吗?你能解释一下,为什么MAX(事实[DATE])似乎是指上下文中的每一天吗?那是因为你在表中显示了日期,因此每一行的“上下文”都会发生变化。只需将以下度量值放入表中,即可看到返回的结果
DateFrom=MAX(事实[DATE])-2
DateTo=MAX(事实[DATE])-1
MyMeasure = 
CALCULATE (
    SUM ( FACT[SALES] ),
    DATESBETWEEN('FACT'[DATE],MAX(FACT[DATE])-2,MAX(FACT[DATE])-1)
)