Google BigQuery StandardSQL中IF函数统计评分报错求助
解决BigQuery中IF函数的报错问题
嘿,我马上就发现问题所在啦!你写的IF函数括号位置出错了,导致BigQuery无法识别到它需要的完整参数。
错误原因分析
你当前的代码:
SELECT COUNT(IF(survey_responses.survey_rating >= 9),1,NULL) AS survey_responses_num_positives
这里你把IF的右括号放在了条件survey_responses.survey_rating >= 9的后面,这就导致IF函数只接收到了一个布尔类型的参数。但BigQuery的IF函数要求必须传入三个参数:布尔条件、满足条件时的返回值、不满足条件时的返回值,三个参数都要包裹在IF的括号内。
修正后的代码
只需要调整括号的位置,把1和NULL也放到IF的括号里就行:
SELECT COUNT(IF(survey_responses.survey_rating >= 9, 1, NULL)) AS survey_responses_num_positives
更简洁的替代写法
其实在BigQuery的Standard SQL里,还有专门的COUNTIF函数可以直接实现这个需求,代码会更简洁易读:
SELECT COUNTIF(survey_responses.survey_rating >= 9) AS survey_responses_num_positives
这个函数会直接统计满足条件的行数,效果和你原来的CASE WHEN以及修正后的IF写法完全一致。
内容的提问来源于stack exchange,提问作者cr2419
相关产品推荐
相关产品推荐

