人生没有彩排
每一天都是现场直播

48、理解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函数的行为类似于数学定义上的取交集,这与筛选器的相交操作是不同的,需要注意区分。

未经允许不得转载:夕枫 » 48、理解INTERSECT函数
订阅评论
提醒
guest
0 评论
最新
最久 最赞
内联反馈
查看所有评论