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

Power Query(M语言):判断A列字符是否存在于B列生成计算列

解决Power Query中判断文本包含的计算列问题

嘿,我知道你在处理这个判断Column A字符是否在Column B中存在的需求时踩了不少坑——别担心,咱们用M语言里最直接高效的方法就能搞定,而且完全适合大文件场景,不会出现循环引用或者性能爆炸的问题。

核心解决方案:使用Text.Contains函数

Power Query的M语言里自带了Text.Contains函数,专门用来判断一段文本是否包含另一段文本,这比你之前尝试的筛选、合并表格要高效得多,不会产生额外的数据集开销,完美适配大文件。

具体操作步骤:

  • 在Power Query编辑器中,选中你的目标表格
  • 点击添加列选项卡,选择自定义列
  • 在弹出的自定义列对话框中,输入以下M代码:
if Text.Contains([Column B], [Column A]) then "Yes" else "No"
  • 点击确定,就能得到你想要的计算列了。

为什么之前的方法会出问题?

  • Calculate是DAX函数,只能在Power BI模型或Excel的DAX表达式里使用,Power Query的M语言根本不支持这个函数,所以肯定会报错。
  • 自合并表格会生成笛卡尔积(每一行都和所有行匹配),大文件下会瞬间让数据量暴涨,不仅运行缓慢还容易触发内存问题,完全没必要用这种绕远路的方法。
  • 如果你之前用Search函数报错,大概率是没处理空值情况——Search遇到空值会直接返回错误,而Text.Contains会自动把空值视为“不包含”,返回"No",兼容性更强。

进阶:处理大小写敏感问题

默认情况下Text.Contains区分大小写,如果你的需求是忽略大小写判断,可以把两个列统一转成小写(或大写)再对比:

if Text.Contains(Text.Lower([Column B]), Text.Lower([Column A])) then "Yes" else "No"

性能优化小贴士

如果你的Column B是超长文本,或者表格行数超过10万行,可以先对Column B做一次轻量清洗(比如去掉多余空格、特殊字符),再进行判断,能小幅提升运行效率;但一般情况下直接用Text.Contains就足够快了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:30:25