PowerBI/DAX之理解SELECTCOLUMNS函数

SELECTCOLUMNS函数与ADDCOLUMNS函数非常类似,SELECTCOLUMNS函数也是迭代表的每一行并计算所给的表达式,最后给表添加新列,但它最终只返回新添加的派生列,而不会返回原有列。


语法和作用

语法:

SELECTCOLUMNS(table_expression, name, scalar_expression [, name, scalar_expression]…)

作用:从空表开始添加派生列,派生列将在第一参数的表提供的行上下文和外部计值上下文中进行计算,最终返回只包含新添加的派生列的新表。

注意:添加的计算列若直接引用列,且引用的列与第一参数的表的列名一致,则会继承该列的数据沿袭。此外,返回的表不包含第一参数所指定表的扩展表,哪怕引用第一参数的表的所有列。


辅助理解的例子

由于派生列的计值环境包括第一参数的表的行上下文,所以可以使用SELECTCOLUMNS函数提取表中所需的部分字段,并可以对列名进行重命名,如下图所示:

除了提取第一参数的表的原有列外,还可以添加使用表达式计算出来的派生列。如下图所示,从产品表中提取产品类别字段,并添加总销售额字段。

在SELECTCOLUMNS函数中,如果是直接引用列的话,那么是具有数据沿袭的,体现为行上下文转换后得到的筛选器能够正常筛选订单表,从而得到各个产品的销售额,如下图所示:

但如果在SELECTCOLUMNS函数中额外使用了其他函数或运算符,比如给产品名称的列引用拼接了一个空字符串,那么虽然值看起来是一样的,但实际上已经不具有数据沿袭了,最终导致行上下文转换后的筛选器无法筛选模型中的数据,最终返回了总销售额,如下图所示:

此外,如果是直接引用列,并且不需要更改列名的情况下,那么可以把列名参数给省略掉,如下图所示:

最后,SELECTCOLUMNS函数返回的表是不包含扩展表的,即使在后面的派生列中直接引用了第一参数的表的所有列。如下图所示:

由于不存在扩展表,所以无法使用RELATED等依赖扩展表的函数。


总结

SELECTCOLUMNS函数可以自由的提取原有列并添加派生列,也是一个很常用的表函数,建议掌握。

### 如何在 Power BI 中使用 DAX Studio 进行外部引用 #### 打开并连接到 Power BI 文件 为了使 DAX Studio 能够访问 Power BI Desktop 数据模型,在启动 DAX Studio 前需确保已开启相应的 .pbix 文件。这是因为只有当 Power BI 应用程序正在运行且加载了特定项目时,DAX Studio 方可建立与之的安全连接[^1]。 #### 配置数据源连接 一旦成功打开了两个应用程序实例——即 Power BI 和 DAX Studio 后,下一步是在后者内指定目标工作区以及要查询的数据集名称。这一步骤对于确保后续操作能够针对正确的上下文至关重要。 ```sql -- Example of a connection string within DAX Studio to reference an external data source from Power BI. EVALUATE SUMMARIZE( 'Sales', 'Product'[Category], "Total Sales", SUM('Sales'[Amount]) ) ``` 此代码片段展示了如何利用 `EVALUATE` 函数配合其他 DAX 表达式来获取来自 Power BI 模型中的聚合结果。注意这里假设存在名为 `'Sales'` 的表格和关联的产品分类维度表 `'Product'`[^2]。 #### 提取所需列数据 面对大规模数据集的情况下,可以采用更精确的方式仅选取必要的字段而非整个表格。例如,通过编写如下所示的 DAX 查询语句实现对特定几列的选择性读取: ```dax // Select specific columns rather than entire tables when dealing with large datasets EVALUATE { ("ColumnA", [MeasureOrField_A]), ("ColumnB", [MeasureOrField_B]) } ORDER BY ColumnA ASC ``` 上述脚本说明了怎样创建一个自定义的结果集合,它由两部分组成:一是作为键值显示的文字标签;二是实际想要检索出来的度量值或字段名。最后按照某个逻辑顺序排列输出项列表[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PowerBI | 夕枫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值