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"
)
)