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

Power Query条件替换未识别Text.Contains匹配值问题排查

问题根因

代码不生效的核心错误是替换器参数选型错误:

  • Replacer.ReplaceText 仅用于文本子串替换,遇到目标字段的null值会直接跳过,不会执行你写的条件判断逻辑,这就是null值完全没更新的直接原因。
  • 你需要的是按条件重写整个单元格值,应该使用Replacer.ReplaceValue替换器。
    另外原代码的返回值和你给出的预期输出取值不匹配:预期中西语裔标识为Yes/No格式,而非文本Hispanic/Non-hispanic,同时你样本里的Decline to respond需要统一首字母大写格式。
修正后可直接运行的M代码
cleanData = 
    Table.ReplaceValue(
        rawData,
        each [Ethnicity],
        each
            if [Ethnicity] = null and (
                Text.Contains([Race], "non-Hispanic", Comparer.OrdinalIgnoreCase) or
                Text.Contains([Race], "not Hispanic", Comparer.OrdinalIgnoreCase)
            ) then "No"
            else if [Ethnicity] = null and Text.Contains([Race], "hispanic", Comparer.OrdinalIgnoreCase)
            then "Yes"
            else if [Ethnicity] = "Decline to respond"
            then "Decline to Respond"
            else [Ethnicity],
        Replacer.ReplaceValue,
        {"Ethnicity"}
    )
匹配样本的运行效果

对照你提供的测试样本,代码运行后完全符合预期:

  • 原有明确Yes/No取值的行无改动
  • White (non-Hispanic) | null 行更新为 White (non-Hispanic) | No
  • White (Hispanic) | null 行更新为 White (Hispanic) | Yes
  • White (non-Hispanic) | Decline to respond 行格式修正为 White (non-Hispanic) | Decline to Respond
  • Asian | null 行因Race字段无相关族裔关键词,保留null值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:09:58