我有一个包含4列的表Neg_ days,Account number(long)
、days_neg(int)
、days_pos(int)
、days_neg_pos(int)
。后3列的值大多为空,其中一行包含零。
当我尝试执行比较运算符时:
spark.sql ="""
select nd.account_number
, case when days_neg > days_pos > days_neg_pos then 1 else 0 end as new_column
from Neg_days as nd
"""
spark.sql.createOrreplaceTempView("Accounts_down")
抛出的错误是:
couldnt resolve the (days_neg > days_pos > days_neg_pos) due to datatype mismatch.
Couldnt resolve bool and int
我已经将数据类型更改为int,所以我无法理解bool数据类型来自
布尔数据类型来自比较操作。SQL不是Python,不能有A > B > C
这样的快捷方式。这将被评估为(A > B) > C
。如果A、B和C是整数,则最终会得到bool > int
,从而产生错误。相反,您需要编写A > B AND B > C
。