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

Power Query如何先匹配ccenter、vnumber列再执行Text.Contains匹配

Power Query 逻辑优化实现方案

核心优化思路

先做vnumber、ccenter两个公共字段的精确匹配过滤,仅对匹配成功的行执行关键词与Line Description的模糊匹配,避免全量关键词遍历的冗余计算

优化后完整M代码

// 预处理参考表:按vnumber、ccenter分组,缓冲每个分组对应的关键词列表
reference_grouped = Table.Buffer(Table.Group(#"table1", {"vnumber", "ccenter"}, {{"Keywords", each _[Keywords], type list}})),
Custom1 = #"Renamed Columns3",
// 左关联匹配两个字段完全一致的行,关联成功的行会带出对应分组的关键词列表
#"Merged Reference" = Table.NestedJoin(
    Custom1, {"vnumber", "ccenter"}, 
    reference_grouped, {"vnumber", "ccenter"}, 
    "Reference Keywords", 
    JoinKind.LeftOuter
),
// 仅对关联成功的行执行Text.Contains匹配,无匹配返回空列表
#"Added Custom" = Table.AddColumn(#"Merged Reference", "Taxonomy Reference", each 
    let
        matched_group = [Reference Keywords]
    in
        if Table.IsEmpty(matched_group) then {}
        else List.Select(
            Table.First(matched_group)[Keywords],
            (Taxonomy_Reference) => Text.Contains([Line Description], Taxonomy_Reference)
        )
),
// 移除临时关联列,展开匹配结果
#"Removed Temporary Columns" = Table.RemoveColumns(#"Added Custom", {"Reference Keywords"}),
#"Expanded Vendors" = Table.ExpandListColumn(#"Removed Temporary Columns", "Taxonomy Reference")

调整说明

  • 取消了原逻辑中三列拼接的Custom列,避免不必要的字符串拼接开销
  • 参考表预处理从缓冲全量关键词列表,改为缓冲按两个公共字段分组的结果,匹配效率更高
  • 用左连接先过滤掉两个字段不匹配的行,仅对有效行执行文本模糊匹配,数据量越大性能提升越明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:06