Spark SQL多条件比较报错:无法解析布尔与整数类型不匹配
问题原因与解决方案
错误根源:Spark SQL不支持
a > b > c这类连续比较语法。第一个表达式days_neg > days_pos会返回布尔值(true/false),后续用这个布尔值和int类型的days_neg_pos做比较,就会触发"布尔与int类型不匹配"的报错,这就是错误的来源。修正后的SQL语句:
将连续比较拆分为两个独立条件,用AND逻辑连接:SELECT nd.account_number , CASE WHEN days_neg > days_pos AND days_pos > days_neg_pos THEN 1 ELSE 0 END AS new_column FROM Neg_days AS nd额外注意:null值处理
由于表中后3列大多为null,null参与比较运算时结果会是null,最终会进入ELSE分支返回0。如果需要针对null值做特殊处理,可以添加null判断或给null设置默认值,示例:SELECT nd.account_number , CASE WHEN days_neg IS NOT NULL AND days_pos IS NOT NULL AND days_neg_pos IS NOT NULL AND days_neg > days_pos AND days_pos > days_neg_pos THEN 1 ELSE 0 END AS new_column FROM Neg_days AS nd
内容的提问来源于stack exchange,提问作者Burt Ox
相关产品推荐
相关产品推荐

