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
相关产品推荐
相关产品推荐

