BigQuery连接GitHub样本表返回空列:查询错误还是平台Bug?
这不是BigQuery的Bug,你的SQL语句存在语法错误
嘿,别担心,这肯定不是BigQuery的问题,你的查询语句里有几个明显的语法问题,导致最后一列(path)为空,我来帮你逐一梳理:
1. SELECT子句的逗号缺失导致字段别名错误
你写的SELECT contents.id, files.repo_name files.path这里漏掉了逗号,BigQuery会把files.path当成files.repo_name的别名,而不是单独去查询files.path字段。这就导致结果里根本没有正确获取到path的值,自然显示为空。
正确的SELECT子句应该是:
SELECT contents.id, files.repo_name, files.path, contents.content
2. WHERE子句的截断与正则表达式不完整
你给出的WHERE子句WHERE REGEXP_MATCH (conten...明显是截断了,要匹配content字段以"import"开头的内容,完整的写法应该是用^import作为正则模式(^表示字符串开头),同时要指定完整的字段名contents.content:
WHERE REGEXP_MATCH(contents.content, r'^import')
(注:BigQuery里加r前缀表示原始字符串,能避免不必要的转义问题)
3. 可选:切换到BigQuery标准SQL写法
你当前用的[bigquery-public-data:github_repos.sample_contents]是Legacy SQL的表引用方式,现在BigQuery更推荐使用标准SQL,表名应该用反引号包裹:
FROM `bigquery-public-data.github_repos.sample_contents` AS contents JOIN `bigquery-public-data.github_repos.sample_files` AS files
修正后的完整SQL语句
把这些问题都修复后,完整的查询语句应该是这样的:
SELECT contents.id, files.repo_name, files.path, contents.content FROM `bigquery-public-data.github_repos.sample_contents` AS contents JOIN `bigquery-public-data.github_repos.sample_files` AS files ON files.id = contents.id WHERE REGEXP_MATCH(contents.content, r'^import')
运行这个修正后的语句,你就能正确获取到repo_name、path和content的信息,不会再出现最后一列为空的情况啦。
内容的提问来源于stack exchange,提问作者xrd
相关产品推荐
相关产品推荐

