python - 使用 INNER JOIN 时在 BigQuery 中获取“invalidQuery”异常
问题描述
我正在尝试使用join
两个 StackOverflow 表来确定平均查询响应时间。但是我是新手,无法JOIN
上桌,请帮忙。
Stackquery = """
SELECT
ques.id,
ques.accepted_answer_id,
ques.creation_date,
ques.last_activity_date,
ansr.id,
ansr.accepted_answer_id,
ansr.creation_date,
ansr.last_activity_date
FROM
`bigquery-public-data:stackoverflow.posts_questions` as ques
INNER JOIN
'bigquery-public-data:stackoverflow.posts_answers' as ansr
ON ques.accepted_answer_id = ansr.id
WHERE
MOD(ABS(FARM_FINGERPRINT(CAST(ques.last_activity_date AS STRING))),100000) = 1
"""
StackOverflowData = bq.Query(Stackquery).execute().result().to_dataframe()
ExceptionTraceback(最近一次调用最后一次)
<ipython-input-72-80c29a281162> in <module>() 18 """ 19 ---> 20 StackOverflowData = bq.Query(Stackquery).execute().result().to_dataframe() ... 491 except KeyError: 492 # The query was in error --> 493 raise Exception(_utils.format_query_errors(query_result['status']['errors'])) 494 return _query_job.QueryJob(job_id, table_name, self._sql, context=self._context) 495 Exception: invalidQuery: Encountered "" at line 14, column 3
解决方案
问题在于查询本身;这有效:
SELECT
ques.id,
ques.accepted_answer_id,
ques.last_activity_date,
ansr.creation_date
FROM
`bigquery-public-data.stackoverflow.posts_questions` as ques
INNER JOIN
`bigquery-public-data.stackoverflow.posts_answers` as ansr
ON ques.accepted_answer_id = ansr.id
WHERE
MOD(ABS(FARM_FINGERPRINT(CAST(ques.last_activity_date AS STRING))),100000) = 1
我建议在webUI中测试您的查询,而不是在 Python 中运行它们,因为它的编译器会检查查询并警告您潜在的错误。
推荐阅读
- c++ - C++矩阵破坏导致断点和严重错误(解决方法在问题的最后)
- ubuntu - 尝试将端口 53 从一个虚拟机 ping 到同一网络上的另一个虚拟机时,端口 53 显然被阻止
- rsyslog - rsyslog 并非所有日志都存在于中央日志服务器上
- ruby-on-rails - Ruby on Rails - 与 to_f 求和返回错误值
- sql - SQL CASE 语句需要处理Text
- google-apps-script - FormResponse.getRespondentEmail() 不适用于已重命名的 G Suite 用户
- spring-boot - Spring kafka 消费记录有一些延迟
- json - 如何在单击保存按钮时阻止 React 应用程序返回主页?
- javascript - vue动态图片绑定
- json - 从控制台运行代码时的 JSON 特殊字符