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

如何用Text.Contains实现两表内合并并匹配字段内容?

用Text.Contains实现Table1与Table2的内合并

操作步骤(Power Query编辑器界面)

  • 将Table1和Table2导入Power Query编辑器
  • 选中Table1,点击主页→合并查询→合并查询作为新查询
  • 在合并窗口中:
    • 左侧Table1选择partial name列
    • 右侧Table2选择要匹配的目标列(比如Full Name)
    • 连接类型选择自定义,在公式栏输入匹配规则:
      Text.Contains([Table2目标列名], [partial name])
      (例:若Table2列是Full Name,则写Text.Contains([Full Name], [partial name]))
  • 点击确定,展开合并后的Table2列,即可得到内合并结果

M代码直接实现

如果习惯编写M语言,可使用Table.NestedJoin函数完成:

let
    // 执行自定义内连接,通过Text.Contains匹配内容
    JoinedTables = Table.NestedJoin(
        Table1, 
        {"partial name"}, 
        Table2, 
        {"Full Name"}, // 替换为Table2实际要匹配的列名
        "MatchedTable2", 
        JoinKind.Inner,
        // 自定义匹配条件:检查Table2的列是否包含Table1的partial name
        (row1, row2) => Text.Contains(row2[Full Name], row1[partial name])
    ),
    // 展开Table2的所需列
    ExpandedColumns = Table.ExpandTableColumn(JoinedTables, "MatchedTable2", {"Full Name", "列1", "列2"}, {"Table2.Full Name", "Table2.列1", "Table2.列2"})
in
    ExpandedColumns

关键细节

  • 区分大小写问题:若需忽略大小写,用Text.Lower统一转换后判断:
    Text.Contains(Text.Lower(row2[Full Name]), Text.Lower(row1[partial name]))
  • 列类型转换:如果partial name或Table2的目标列不是文本类型,先转换:
    // 转换Table1的partial name列为文本
    Table1_Text = Table.TransformColumns(Table1, {{"partial name", Text.From, type text}})
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:12:34