[知识体系] 理解 EXCEPT

  [复制链接]
查看99166 | 回复114 | 2021-2-21 18:50:47 | 显示全部楼层 |阅读模式
EXCEPT 函数实现对两个集合的补集运算,它返回一个表,该表只包含第一参数中的行,不包含第二参数中的行。两个表必须具有相同的列数和数据类型,并且这些列在各自的表中按位置组合。第一参数定义了结果中列的名称(后续参数可以修改返回的行数,但不影响列名):
  1. EXCEPT ( <LeftTable>, <RightTable> )
复制代码

返回未出现在右侧表中的左侧表的行。

参数属性描述
LeftTableEXCEPT 运算使用的左表表达式.
RightTableEXCEPT 运算使用的右表表达式


7061211941461.png

EXCEPT 运算图示

注意


  • 两表的公共行不会包含在结果中,如果一行仅出现在 LeftTable 中,则该行及其重复项都将出现在结果集中。
  • 结果中的列名与 LeftTable 中的列名匹配。
  • 返回的表具有基于 LeftTable 中的列的沿袭,与第二个表中的列的沿袭无关。
  • 用作参数的两个表必须具有相同的列数。
  • 列的比较基于位置,数据比较没有强制类型转换。
  • 返回的行集取决于两个表达式的顺序。
  • 返回的表不包括与 LeftTable 相关的表的列,也就是不支持扩展表理论

示例用法

EXCEPT 结果保留两个参数中第一个表的沿袭。例如,以下查询保留了数据模型中物理列的沿袭,即使第二个表不具有相同沿袭
  1. EVALUATE
  2. EXCEPT (
  3.     VALUES ( Product[Color] ),
  4.     UNION (
  5.         ROW ( "Color", "Red" ),
  6.         ROW ( "Color", "Blue" )
  7.     )
  8. )
复制代码


7061211941462.png



以下查询计算在 2008 年购买了某个产品(代码 0202011)且没有购买另一个产品(代码 0201038)的客户:
  1. EVALUATE
  2. CALCULATETABLE (
  3.     VALUES ( Customer[Customer Code] ),
  4.     EXCEPT (
  5.         CALCULATETABLE (
  6.             SUMMARIZE (
  7.                 Sales,
  8.                 Customer[CustomerKey]
  9.             ),
  10.             'Date'[Calendar Year Number] = 2008,
  11.             Product[Product Code] = "0202011"
  12.         ),
  13.         CALCULATETABLE (
  14.             SUMMARIZE (
  15.                 Sales,
  16.                 Customer[CustomerKey]
  17.             ),
  18.             'Date'[Calendar Year Number] = 2008,
  19.             Product[Product Code] = "0201038"
  20.         )
  21.     )
  22. )
复制代码


7061211941463.png


不适用扩展表

EXCEPT 的结果不适用扩展表理论,即使结果表具备数据沿袭,你也无法将其作为筛选上下文筛选关系一端的表。这是一种特殊情形,与 EXCEPT 类似的还有 UNIONINTERSECT,它们在筛选上下文中仅筛选自身包含的列,不涉及扩展表
回复

使用道具 举报

没没 | 2021-4-24 12:43:57 | 显示全部楼层
好帖必须得顶起
回复

使用道具 举报

粟米 | 2021-6-2 13:23:42 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊
回复

使用道具 举报

简单爱你 | 2021-6-9 18:02:37 | 显示全部楼层
楼下的接上
回复

使用道具 举报

hua668 | 2021-6-18 09:33:17 来自手机 | 显示全部楼层
好帖必须得顶起
回复

使用道具 举报

jylt2004 | 2021-7-9 08:53:15 来自手机 | 显示全部楼层
不错 支持下
回复

使用道具 举报

kevin | 2021-8-24 16:12:17 来自手机 | 显示全部楼层
顶起顶起顶起
回复

使用道具 举报

成哥 | 2021-10-7 20:25:44 来自手机 | 显示全部楼层
越办越好,经常过来学习视频~~~~~~~~~
回复

使用道具 举报

dollar | 2021-10-21 12:16:03 | 显示全部楼层
为了三千积分!
回复

使用道具 举报

lizhongjie | 2021-10-26 12:49:06 | 显示全部楼层
边撸边过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则