Python/Databricks中SQL count查询返回值与整数比较报错问题
错误原因
sql() 函数执行SQL查询后返回的是DataFrame类型的结果集对象,而非count统计的整数值,直接将DataFrame对象与整数做大小比较,自然会触发类型不支持的报错。你代码注释中已经标注了正确的取值方法,只需将统计数值从结果集中取出即可。
修正后的代码
# 执行SQL查询获取DataFrame结果集 id_of_zero_count_df = sql(""" SELECT count(*) cnt FROM schema.table where ID = 0 """) # 提取第一行第一列的统计数值,也可以按字段别名取,可读性更高:collect()[0]['cnt'] id_of_zero_count = id_of_zero_count_df.collect()[0][0] display(id_of_zero_count) if id_of_zero_count > 0: print("Quality check not passed") induce_fail_func()
额外注意点
你原代码中对SQL字符串调用了format(val),但SQL语句中没有对应的{}占位符,如果需要将val参数传入SQL作为查询条件,需要先修改SQL语句的where部分,比如调整为where ID = {val},否则format方法不会生效,还可能引发隐含的SQL语法问题。
内容的提问来源于stack exchange,提问作者Shoaib Maroof
相关产品推荐
相关产品推荐

