PowerBI/DAX之理解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函数的行为类似于数学定义上的取差集,为表操作提供了更多的选择,建议掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PowerBI | 夕枫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值