0
在发布之前,我在互联网上浏览过类似帖子,但找不到匹配项。道歉,如果它已经回答,我错过了职位。通过使用Python API的Bigquery更新声明
我已经创建了一个python脚本,通过app引擎将数据从Google云存储加载到BigQuery。由于应用引擎具有60秒的超时时间窗口,因此希望以异步模式提交这些作业,并且希望将JOB ID存储在其中一个bigquery表中。另一个脚本将保留作业的状态,如果作业是“完成”,则将结果提交并更新该表中完成的作业状态。这样下次我不会为同一份工作检查工作状态。
如果我取消选择“使用旧版SQL”,但未使用API,update语句在Web控制台上正常工作。我尝试了不同的方式,例如在查询前使用#standardSQL,但没有运气。
_qry = "update temp.temp set name1='xyz1' where name1='hjk'"
job_data = {
'jobReference': {
'projectId': cfg._projectid,
'job_id': str(uuid.uuid4())
},
'configuration': {
'query': {
'query': _qry,
'timeoutMs': 60000,
'useLegacySql': false
},
'allowLargeResults': True,
'priority': 'BATCH'
}
}
_jbslist = _bq.jobs()
_jbq_response = _jbslist.insert(projectId=_projectid,body=job_data).execute()
_jbslist = _bq.jobs()
_job = None
_job =
_jbslist.get(projectId=_projectid,jobId=_jbq_response['jobReference']['jobId']).execute()
你有一些'traceback'消息吗? –
这是我收到的错误信息。 错误: 查询:1.1 - 1.58:无法识别的令牌更新。 (错误代码:invalidQuery) – user374374
在你的JSON中你有''useLegacySql':false'。它是如何运行你的代码? 'false'在Python中没有定义,它应该是'False',但解释器仍然应该抛出一个错误。要求确认。 –