如何在Power BI中基于另一列匹配返回对应行的指定列数值
完全可以实现,两种常用操作方法如下:
方法1:使用DAX创建计算列(适用于数据建模阶段)
直接在Power BI建模视图选中目标表,点击「新建列」,输入如下公式即可:
Score 2 = LOOKUPVALUE('你的表名'[Score], '你的表名'[Name], '你的表名'[Name 2])
注意将公式里的
你的表名替换为你自己的表实际名称即可。
小提示:如果Name列存在重复的姓名值,LOOKUPVALUE会返回匹配错误,你可以根据业务需求搭配FILTER、SUMX等函数做去重或聚合处理。
完成后计算列会自动匹配Name 2对应的分数填充,你的示例表最终输出结果如下:
| Name | Score | Name 2 | Score 2 |
| ---- | ----- | ------ | ------- |
| Bob | 100 | Sue | 80 |
| Sue | 80 | Nick | 50 |
| Nick | 50 | Bob | 100 |
方法2:使用Power Query处理(适用于数据清洗阶段)
如果需要在数据加载阶段就完成填充,可以进入Power Query编辑器,操作如下:
- 选中目标表,点击「合并查询」->「将查询合并为新查询」
- 两个表都选当前目标表,上方匹配列选
Name 2,下方匹配列选Name,联接种类选「左外部(第一个表中的所有行,第二个表中的匹配行)」,点击确定 - 展开合并后生成的表列,只勾选
Score字段,确认后就会生成匹配好的分数列,最后把列重命名为Score 2再加载到模型即可。
如果要写M函数实现,可以直接添加自定义列,输入公式:
= Table.Row(Table.SelectRows(#"上一步骤名称", (x) => x[Name] = [Name 2])){0}[Score]
注意把
上一步骤名称替换为Power Query中当前步骤的上一个步骤名称。
内容的提问来源于stack exchange,提问作者Lynn234
相关产品推荐
相关产品推荐

