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

49、理解EXCEPT函数

EXCEPT函数属于集合函数,可以对表实现数学定义上的取差集操作,将返回只存在其中一个表中的行。


语法和作用

语法:

EXCEPT ( <LeftTable>, <RightTable> )

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

注意:

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

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

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

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


辅助理解的例子

1、如下图所示,EXCEPT函数将返回左表中的那些不存在于右表的行,由于只有A3产品不存在于TableB,因此只返回了这一行。

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

EXCEPT('TableA','TableB')

等价于:

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

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

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

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

6、EXCEPT函数可以用在需要取差集或取反的场景,比如计算切片器中未选产品的销售额,如下图所示:


总结

EXCEPT函数的行为类似于数学定义上的取差集,为表操作提供了更多的选择,建议掌握。

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