如何用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]))
- 左侧Table1选择
- 点击确定,展开合并后的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
相关产品推荐
相关产品推荐

