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
Filter 使用筛选器筛选没有直接关系的其他表时出现奇怪的行为?_Filter_Powerbi_Dax - Fatal编程技术网

Filter 使用筛选器筛选没有直接关系的其他表时出现奇怪的行为?

Filter 使用筛选器筛选没有直接关系的其他表时出现奇怪的行为?,filter,powerbi,dax,Filter,Powerbi,Dax,我有两个事实表,First和Second,还有两个维度表,dimTime和DIMCOLOR 事实表First如下所示: 刻面表Second如下所示: 两个dim表与两个事实表都有1:*关系,过滤是单向的(从dim到事实),如下所示: 添加以下度量,我希望FILTER函数不会对计算产生任何影响,因为Second不会过滤First,对吗 Test_Alone = CALCULATE ( SUM ( First[Amount] ); First[Alone] = "Y";

我有两个事实表,
First
Second
,还有两个维度表,
dimTime
DIMCOLOR

事实表
First
如下所示:

刻面表
Second
如下所示:

两个dim表与两个事实表都有1:*关系,过滤是单向的(从dim到事实),如下所示:

添加以下度量,我希望FILTER函数不会对计算产生任何影响,因为
Second
不会过滤
First
,对吗

Test_Alone = 
CALCULATE (
    SUM ( First[Amount] );
    First[Alone] = "Y";
    FILTER(
        'Second';
        'Second'[Colour]="Red"
    )
)
因此,这应该计算为7,因为
First
中只有两行[单独]=“Y”的值为1和6,并且第一行和第二行之间没有直接关系。然而,这计算为6。如果在计算中删除FILTER函数参数,它的计算结果为7

随附的pbix文件中有其他措施显示了相同类型的行为

过滤一个与第二个事实表没有直接关系的事实表如何影响对第二个事实表进行的计算


Ziped Power BI文件:

评估表引用
'Second'
生成一个表,该表包含
Second
表中的列,以及
Second
表的所有(可传递)父表中的列

在本例中,这是一个包含
DIMCOLOR
dimTime
Second
中所有列的表

如果只运行以下命令,则无法看到此内容:

evaluate 'Second'
当“evaluate”将结果返回给用户时,不包括这些“父表”(或“相关”)列

即便如此,这些专栏仍然存在。 当表转换为行上下文时,这些相关列通过
related
变得可用。 请参见以下查询:

evaluate FILTER('Second', ISBLANK(RELATED(dimColour[Color])))

evaluate 'Second' order by RELATED(dimTime[Hour])
类似地,当使用
CALCULATE
的参数更新过滤器上下文时,这些隐藏的“相关”列不会被忽略;因此,在您的示例中,它们可以首先过滤
。您可以通过使用一个剥离相关列的函数看到这一点,例如
INTERSECT

Test_ActuallyAlone = CALCULATE (
    SUM ( First[Amount] ),
    First[Alone] = "Y",
    //This filter now does nothing, as none of the columns in Second
    //have an impact on 'SUM ( First[Amount] )'; and the related columns
    //are removed by the INTERSECT.
    FILTER(
        INTERSECT('Second', 'Second')
        'Second'[Colour]="Red"
    )
)
(请参阅这些描述“扩展表”的参考资料) (这是对这种行为的一种替代但等效的解释)


)

谢谢!我想这就是我想要的答案。当我学习并理解了这些概念后,我会把它标记为正确的。干杯
Test_ActuallyAlone = CALCULATE (
    SUM ( First[Amount] ),
    First[Alone] = "Y",
    //This filter now does nothing, as none of the columns in Second
    //have an impact on 'SUM ( First[Amount] )'; and the related columns
    //are removed by the INTERSECT.
    FILTER(
        INTERSECT('Second', 'Second')
        'Second'[Colour]="Red"
    )
)