PowerBI/DAX之理解INTERSECT函数

INTERSECT函数属于集合函数,可以对表实现数学定义上的取交集操作,将返回两个表中都具有的相同行。


语法和作用

语法:

INTERSECT ( <LeftTable>, <RightTable> )

作用:对左右两个表取交集,从左表中找出那些同时存在于右表的行。

注意:

1、INTERSECT 的参数不可交换。通常,INTERSECT(T1, T2)的结果与 INTERSECT(T2, T1)的结果有不同的含义。

2、返回的结果会保留重复行,只要左表中的行能在右表中找到,那都会被返回。

3、用作参数的两个表必须具有相同的列数。

4、在左右两个表进行比较时,是按位置进行比较的,而不是按照列名。

5、最终返回的表的列名与左表的一致,且会继承左表的数据沿袭。

6、最终返回的表不会包含扩展表,即使左表存在扩展表。


辅助理解的例子

1、如下图所示,INTERSECT函数将返回左表中的那些同时存在于右表的行,比如A3产品不存在于TableB,因此A3产品的这一行就不会被返回。另外返回结果会保留重复行,比如B2产品的行。

2、如果用代码来表示的话,那么INTERSECT函数的等价写法如下:

INTERSECT('TableA','TableB')

等价于:

EVALUATE
FILTER(
	SELECTCOLUMNS('TableA','TableA'[产品类别],'TableA'[产品名称],'TableA'[销售金额]),  
	('TableA'[产品类别],'TableA'[产品名称],'TableA'[销售金额]) IN 'TableB'	
)

3、INTERSECT 的参数不可交换,如果将左表和右表互换位置,那么得到的结果通常并不一致,如下图所示:

4、用作参数的两个表必须具有相同列数,否则会报错,如下图所示:

5、在左右两个表进行比较时,是按位置进行比较的,而不是按照列名,因此列顺序也要一致。如果列顺序不一致,通常会因为两表无法比较而得到空表,如下图所示:

6、INTERSECT函数最终返回的表不会包含扩展表,即使左表存在扩展表,如下图所示:

7、可以使用INTERSECT函数来进行筛选器转移,达到更改数据沿袭的目的,如下图所示:


总结

INTERSECT函数的行为类似于数学定义上的取交集,这与筛选器的相交操作是不同的,需要注意区分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PowerBI | 夕枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值