[知识体系] 认识投影函数

  [复制链接]
查看147586 | 回复139 | 2021-2-21 18:52:45 | 显示全部楼层 |阅读模式
何为投影函数(Projection)

关系代数中有五个基本运算:选择、投影、笛卡尔积、集合并、集合差,它们能实现大多数我们常用的数据检索操作。此外还有连接、集合交、除运算等,它们都可以通过五个基本运算表示出来。


投影运算作用于单个关系 R,得到由 R 的一个列子集构成的新关系,如图所示:


7076211936381.png

图示:投影运算

DAX 中的投影函数

DAX 作为查询语言的时候,缺少像投影这样的功能。实际上,DAX 允许你向表中添加列,但不能从表中直接删除某些列。为了实现投影运算,你可以使用 SUMMARIZE 从当前表中提取指定的列,或者使用 ADDCOLUMNS 从一个必须包含在查询中的列开始,添加新的列,这种方式添加的是原表已有的列。在本章的后面你会了解到,当你向表中添加原表不存在的新列时,我们称之为添加派生列,这是更常见的情景。


下面的代码从 Product 表中提取产品 ID,产品名称和价格三列
  1. SELECT [Product Id], [Product Name], [List Price] FROM Product
复制代码
  1. EVALUATE
  2. ADDCOLUMNS(
  3.     DISTINCT( Product[Product Id] ),
  4.     "Product Name", CALCULATE( VALUES( Product[Product Name] ) ),
  5.     "List Price", CALCULATE( VALUES( Product[List Price] ) )
  6. )
复制代码
  1. EVALUATE
  2. SUMMARIZE(
  3.     Product,
  4.     Product[Product Id],
  5.     Product[Product Name],
  6.     Product[List Price]
  7. )
复制代码

DAX 可以通过两种方式获得相同的结果。你可以利用 Product ID 列的唯一性,通过 ADDCOLUMNS 函数基于此 ID 列来添加其他列。为了检索每个产品的对应值,你需要加入 CALCULATEVALUES,注意,当产品 ID 不是表的唯一键时查询会报错。
建议总是使用 SUMMARIZE 来执行对表的投影,因为它更容易阅读,并且比其他 DAX 函数具有更好的性能
回复

使用道具 举报

dondeng | 2021-4-24 13:15:41 | 显示全部楼层
沙发???
回复

使用道具 举报

19491010 | 2021-6-16 11:29:17 来自手机 | 显示全部楼层
嘘,低调。
回复

使用道具 举报

发现者 | 2021-6-22 09:12:12 | 显示全部楼层
是爷们的娘们的都帮顶!大力支持
回复

使用道具 举报

christam | 2021-7-15 06:07:43 来自手机 | 显示全部楼层
广告位,,坐下看看
回复

使用道具 举报

教授2 | 2021-7-15 19:19:29 | 显示全部楼层
高手云集 果断围观
回复

使用道具 举报

qqwwqqww | 2021-10-10 21:40:25 | 显示全部楼层
占位编辑
回复

使用道具 举报

graven | 2021-10-15 14:44:56 | 显示全部楼层
啥玩应呀
回复

使用道具 举报

huati | 2021-11-13 11:05:34 | 显示全部楼层
前排顶,很好!
回复

使用道具 举报

大个仔 | 2021-11-21 14:44:32 | 显示全部楼层
支持,楼下的跟上哈~
回复

使用道具 举报

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

本版积分规则