Tableau多条件IF语句编写报错求助,需按日期条件返回对应天数
Tableau多条件IF语句报错解决方案
核心报错原因
- 返回值类型不统一:
DATEDIFF函数输出为数字类型,你写的"0"是带引号的字符串类型,Tableau要求计算字段所有分支返回值类型必须一致,因此触发类型冲突报错 - NULL判断顺序错误:NULL值和任意日期做大小比较的结果均为未知,不会命中前两个日期比较分支,你将
ISNULL判断放在最后,该分支永远无法触发,不符合业务逻辑要求
修正后代码
IF ISNULL([Prepared Date]) THEN DATEDIFF('day', [Prep Deadline], TODAY()) ELSEIF [Prepared Date] > [Prep Deadline] THEN DATEDIFF('day', [Prep Deadline], [Prepared Date]) ELSE 0 END
修改说明
- 调整判断优先级,将NULL值校验放在最前,保证空值场景可以被正确识别
- 将字符串格式的
"0"改为数字格式的0,统一所有分支返回值为数字类型,消除类型冲突 - 简化最后一个分支为
ELSE,排除空值、准备日期晚于截止日的场景后,剩余场景全部符合「准备日期早于/等于截止日」的要求,无需重复写判断条件
内容的提问来源于stack exchange,提问作者Brennan Montoni
相关产品推荐
相关产品推荐

