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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
Filter Dax:使用筛选器和all进行计算,结果不是预期结果_Filter_Powerbi_Filtering_Dax_Calculated Columns - Fatal编程技术网

Filter Dax:使用筛选器和all进行计算,结果不是预期结果

Filter Dax:使用筛选器和all进行计算,结果不是预期结果,filter,powerbi,filtering,dax,calculated-columns,Filter,Powerbi,Filtering,Dax,Calculated Columns,我有一个从2000/01/01到2020/1028的筛选日期表和一个SP索引的事实表。模型设置如下: 我用这个表达: firstDateYear2020 = CALCULATE ( MIN ( 'SP Index 20201028'[Date] ), FILTER ( ALL ( 'SP Index 20201028'[Date] ), YEAR ( 'SP Index 20201028'[Date] ) = 2020 ) ) 获取20

我有一个从2000/01/01到2020/1028的筛选日期表和一个SP索引的事实表。模型设置如下:

我用这个表达:

firstDateYear2020 =
CALCULATE (
    MIN ( 'SP Index 20201028'[Date] ),
    FILTER (
        ALL ( 'SP Index 20201028'[Date] ),
        YEAR ( 'SP Index 20201028'[Date] ) = 2020
    )
)
获取2020年SP指数的第一个日期

在报告视图中,添加日期切片并查看2020年的第一个日期,当切片器的状态日期小于2020/01/01时,DAX表达式返回预期的日期(2020/01/01或2020/01/02)

但是,当我选择一个大于2020/01/01的开始时间时,DAX表达式返回所选的开始日期,而不是2020年的第一个日期,我希望它的行为与上面的结果相同

我在过滤器中使用的DAX表达式,我认为它会忽略切片器效果,但是,当开始时间大于2020/01/01时,切片器看起来仍然有效果?你能帮我解释一下为什么这个DAX表达式有不同的结果吗


您应该尝试将筛选日期表[Year]而不是'SP Index 20201028'[Date],因为您有一个关系,按维度筛选总是一个更好的选择; 可能在切片器中,您有来自DateTable的列,并且您丢失了上下文

firstDateYear2020 = CALCULATE(MIN('SP Index 20201028'[Date]),
FILTER(ALL(DateTable[Year]),DateTable[Year]=2020))

我同意@msta42a。如果您的切片器使用的是DateTable,那么这就是我所期望的。您可以这样写:

firstDateYear2020 =
CALCULATE (
    MIN ( 'SP Index 20201028'[Date] ),
    ALL ( 'DateTable' ),
    YEAR ( 'DateTable'[Date] ) = 2020
)

原因是ALL只删除它引用的表上的筛选器,而不删除来自其他表的筛选器。因此,您已经成功删除了列
'SP Index 20201028'[Date]
上的所有筛选器,但是如果该列不是切片器使用的列,那么切片器仍然应用筛选器,因为它来自上游的另一个表。在表上进行筛选只会在关系中向下游流动。

我认为使用“年度所有”列不会达到您想要的效果,因为切片器使用的不是该列。