You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerBI中基于ID匹配对比Name字段的查询实现需求

PowerBI 两表Name字段对比解决方案

一、数据预处理(先修复Table 2的问题)

Table 2存在列名错误(ID.)和无效空行,先在Power Query编辑器里清洗:

  • 导入Table 2后,把列名ID.重命名为ID
  • 选中任意列,点击筛选按钮,取消勾选「空」,删掉无效空行
  • 统一ID列的数据类型(和Table 1的ID类型保持一致,比如都设为文本或数字)

二、用Power Query实现(推荐,适合批量处理)

  1. 合并两张表
    打开Power Query编辑器,选中Table 1,点击「合并查询」→「合并查询作为新查询」:

    • 合并对象选Table 2
    • 匹配列选两张表的ID
    • 连接类型选「左外部」(保留Table 1所有行,匹配Table 2对应行)
      确定后,Table 1会新增一列包含Table 2的匹配数据。
  2. 提取Table 2的Name并生成结果列

    • 点击新增列的展开按钮,只勾选Name列,重命名为Table2_Name
    • 添加自定义列Name Result,输入以下M语言公式:
if [Name] = null or [Name] = "" then "Empty in Table 1"
else if [Table2_Name] = null then "Not Found Table 2"
else if [Name] = [Table2_Name] then "No Difference"
else "Difference Value"
  • 按需删除多余列(比如Table2_Name、Email),最终结果就和你要的一致。

三、用DAX计算列实现(适合数据模型已关联的场景)

如果已经给两张表通过ID建立了关系(Table 1为主动表),可以直接加计算列:

  1. 先加Table2_Name列:
Table2_Name = RELATED(Table2[Name])
  1. 再加Name Result列:
Name Result = 
SWITCH(
    TRUE(),
    ISBLANK(Table1[Name]) || Table1[Name] = "", "Empty in Table 1",
    ISBLANK([Table2_Name]), "Not Found Table 2",
    Table1[Name] = [Table2_Name], "No Difference",
    "Difference Value"
)

最终效果

处理后得到的结果如下:

IDNameName Result
1001HenrikNo Difference
1002LarsNot Found Table 2
1003FredrikDifference Value
1004Empty in Table 1

内容的提问来源于stack exchange,提问作者Istiak Mahmood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:50:40