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

Power Query自定义列语法错误求助:提示缺少'else'令牌

Power Query自定义列语法错误修正

错误原因

你遇到的Expression.SyntaxError: Token 'else' expected错误,直接原因是最后一行的if语句没有对应的else分支——Power Query要求所有if必须搭配else,不能单独存在。除此之外,代码还存在逻辑结构混乱、字段数据类型混合判断的问题([Expiry Date]同时出现日期、null、字符串值),需要一并调整。

修正后的代码

= Table.AddColumn(#"Renamed Columns", "SkillCo Validity", each 
    // 先处理特殊字符串值:无过期日期
    if [Expiry Date] = "No Expiry" then ""
    // 处理无过期日期的空值情况
    else if [Expiry Date] = null then "Valid"
    // 处理已归档的情况(注:原代码用[Expiry Date] = "Yes"存疑,建议确认是否为归档状态字段,比如[Archived] = "Yes")
    else if [Expiry Date] = "Yes" then "Dropped"
    // 判断30天内到期
    else if DateTime.IsInNextNHours([Expiry Date], 720) then "Due (30d)"
    // 判断60天内到期
    else if DateTime.IsInNextNHours([Expiry Date], 1440) then "Due (60d)"
    // 过期日期在未来且超出60天范围
    else if [Expiry Date] > DateTime.LocalNow() then "Valid"
    // 最后处理已过期的情况
    else "Expired"
)

关键调整说明

  • 修复语法问题:将所有条件整合为连续的if-else if-else结构,确保每个if都有对应分支,满足Power Query语法要求。
  • 优化判断顺序:先处理特殊字符串值,再处理空值,最后处理日期相关判断,避免数据类型冲突导致的逻辑错误。
  • 逻辑合理性提示:原代码中[Expiry Date] = "Yes"的逻辑不符合字段语义,建议确认是否是归档状态字段写错了名称,若确实是[Expiry Date]存储此类值,需后续统一数据类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:27:39