BigQuery列识别及运算报错求助(谷歌数据分析课程实践)
BigQuery列名含空格导致的SQL语法错误解决方法
你的问题核心是列名包含空格但未用反引号包裹,BigQuery的SQL解析器会把空格前后的内容识别为独立标识符,从而引发一系列错误。以下是具体问题分析和修正方案:
错误原因拆解
第一次查询用
Small_Bags报错:"Unrecognized name: Small_Bags; Did you mean Small Bags? at [4:9]"
这说明你的数据表中实际列名是Small Bags(带空格),而非你写的Small_Bags(带下划线),BigQuery已经提示了正确的列名。第二次去掉下划线但未加反引号报错:
"Syntax error: Expected end of input but got "+" at [8:20]"
未加反引号的Small Bags会被解析成两个独立的标识符Small和Bags,SQL解析器无法理解Small Bags + ...的语法,因此报错。第三次移除运算后仍报错:
Unrecognized name: Small at [4:9]
同样是因为Small Bags没加反引号,解析器把Small当成单独的列名查找,但你的表中不存在这个列,所以报错。
正确的SQL查询代码
将所有带空格的列名用**反引号(`)**包裹,同时注意移除列列表末尾多余的逗号:
SELECT Date, Region, `Small Bags`, `Large Bags`, `XLarge Bags`, `Total Bags`, `Small Bags` + `Large Bags` + `XLarge Bags` AS Total_Bags_Calc FROM `sample-bigquery-421913.avocado_data.avocado_prices`
关键注意事项
- BigQuery中,任何包含空格、特殊字符(如
-、.)或与SQL关键字重名的列名/表名,都必须用反引号包裹。 - 列列表的最后一项不要添加多余的逗号,否则也会触发语法错误。
内容的提问来源于stack exchange,提问作者Alisha Smith
相关产品推荐
相关产品推荐

