从数据到信息
从信息到洞察

认识投影函数

何为投影函数(Projection)

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

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

图示:投影运算

DAX 中的投影函数

DAX 作为查询语言的时候,缺少像投影这样的功能。实际上,DAX 允许你向表中添加列,但不能从表中直接删除某些列。为了实现投影运算,你可以使用 SUMMARIZE 从当前表中提取指定的列,或者使用 ADDCOLUMNS 从一个必须包含在查询中的列开始,添加新的列。

下面的代码从 Product 表中提取产品 ID,产品名称和价格三列

SELECT [Product Id], [Product Name], [List Price] FROM Product
EVALUATE
ADDCOLUMNS(
    DISTINCT( Product[Product Id] ),
    "Product Name", CALCULATE( VALUES( Product[Product Name] ) ),
    "List Price", CALCULATE( VALUES( Product[List Price] ) )
)
EVALUATE
SUMMARIZE(
    Product,
    Product[Product Id], 
    Product[Product Name],
    Product[List Price]
)

DAX 可以通过两种方式获得相同的结果。你可以利用 Product ID 列的唯一性,通过 ADDCOLUMNS 函数基于此 ID 列来添加其他列。为了检索每个产品的对应值,你需要加入 CALCULATEVALUES,注意,当产品 ID 不是表的唯一键时查询会报错。

建议总是使用 SUMMARIZE 来执行对表的投影,因为它更容易阅读,并且比其他 DAX 函数具有更好的性能

说点什么

avatar
1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
  订阅本文评论  
提醒
DAX 圣经

导读

初识 DAX

DAX 基础知识

DAX 原理

DAX 高级原理

基础函数类型

迭代函数

CALCULATE 函数

CALCULATE 调节器

基础表函数

条件判断函数

查找匹配函数

时间智能函数

统计类函数

投影函数

分组/连接函数

集合函数

其他函数