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

Power Query中基于指定列值生成对应描述的多IF/Switch语句实现求助

Power Query 自定义列匹配实现方案

原代码问题说明

你写的代码存在两个错误:

  1. 错误使用Text.Length函数:Text.Length返回的是文本长度,而你需要直接比较列的文本值与目标字符串,不需要计算长度。
  2. 字符串未加引号:Power Query中字符串必须用双引号包裹,OKOKOK需要写成"OKOKOK"。

解决方案

方案1:嵌套IF语句(适合新手理解)

在Power Query中添加自定义列时,使用以下代码:

= if [Concatenated Data] = "NONONO" then "缺失AM、DM和ML"
  else if [Concatenated Data] = "NONOOK" then "缺失AM和ML"
  else if [Concatenated Data] = "NOOKNO" then "缺失DM和ML"
  else if [Concatenated Data] = "NOOKOK" then "缺失ML"
  else if [Concatenated Data] = "OKNONO" then "缺失AM和DM"
  else if [Concatenated Data] = "OKNOOK" then "缺失AM"
  else if [Concatenated Data] = "OKOKNO" then "缺失DM"
  else if [Concatenated Data] = "OKOKOK" then "全部正常"
  else "未知状态"

逐行匹配Concatenated Data列的文本值,返回对应的描述,最后一行else用于处理未定义的意外值。

方案2:Record映射(简洁易维护)

如果后续需要修改匹配规则,用Record键值对的方式更高效:

= try Record.Field(
    [
        NONONO = "缺失AM、DM和ML",
        NONOOK = "缺失AM和ML",
        NOOKNO = "缺失DM和ML",
        NOOKOK = "缺失ML",
        OKNONO = "缺失AM和DM",
        OKNOOK = "缺失AM",
        OKOKNO = "缺失DM",
        OKOKOK = "全部正常"
    ],
    [Concatenated Data]
  ) otherwise "未知状态"
  • 先创建一个包含所有匹配规则的Record,键为列中的可能值,值为对应描述。
  • Record.Field根据列值提取对应的描述,try...otherwise用于处理未定义的意外值,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:43:14