Tableau Prep中ELSE IF语句出现2个无效语法错误如何解决
报错原因
计算逻辑存在两处核心语法错误,直接触发「无效语法」「预期文本不匹配」报错:
- 除首个IF分支外,后续所有
ELSEIF分支都缺失完整判断逻辑:Tableau IF计算规则要求每个ELSEIF后必须跟可返回布尔值(真/假)的判断表达式,原代码仅写了待匹配的字符串值(如"ALANN"),未指定判断字段[Application Building]和等于运算符=,语法结构不完整。 ELSE分支使用不符合规则:ELSE是IF逻辑的兜底分支,用于匹配所有前置条件均不满足的场景,后面不能追加判断值、THEN关键字,原代码写的ELSE "ORHLL" THEN "OR - Portland"属于语法结构错误。
修正方案
逐分支匹配写法(完全对齐原始判断逻辑)
补全所有分支的判断表达式,调整错误的ELSE分支结构:
IF [Application Building] = "ALHVL" THEN "AL - Statewide" ELSEIF [Application Building] = "ALANN" THEN "AL - Statewide" ELSEIF [Application Building] = "ALBIR" THEN "AL - Statewide" ELSEIF [Application Building] = "ALDEC" THEN "AL - Statewide" ELSEIF [Application Building] = "ALDOT" THEN "AL - Statewide" ELSEIF [Application Building] = "ALENT" THEN "AL - Statewide" ELSEIF [Application Building] = "ORHLL" THEN "OR - Portland" END
提示:如果你的实际需求是「所有不属于上述AL开头编码的记录,全部返回"OR - Portland"」,可以删掉最后一个
ELSEIF [Application Building] = "ORHLL" THEN行,直接写ELSE "OR - Portland"即可。
简化写法(更易后续维护)
多个值对应同一个返回结果时,可以用IN运算符合并判断条件,减少重复代码:
IF [Application Building] IN ("ALHVL","ALANN","ALBIR","ALDEC","ALDOT","ALENT") THEN "AL - Statewide" ELSEIF [Application Building] = "ORHLL" THEN "OR - Portland" END
内容的提问来源于stack exchange,提问作者seth
相关产品推荐
相关产品推荐

