在发布此内容之前,我在互联网上浏览了类似的帖子,但我找不到匹配项。抱歉,如果已经回答并且我错过了帖子。
我创建了一个python脚本,通过应用程序引擎将数据从Google云存储加载到BigQuery。由于应用引擎具有 60 秒的超时窗口,因此希望在异步模式下提交这些作业,并希望将 JOB ID 存储在其中一个 bigquery 表中。另一个脚本将保留作业的状态,如果作业为"完成",则提取结果并将作业状态更新为该表中的已完成。这样下次我就不会检查同一作业的作业状态。
如果我取消选择"使用旧版 SQL"但不使用 API,则更新语句在 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()
Now Update 语句正在工作。需要在 SQL 之前添加标准 SQL。
_qry1 = "#standardSQL"
_qry = _qry1 + "n" + "UPDATE `tensile-site-168620.temp.temp` SET name1='chaitu1331' WHERE name1='chaitu11'"
表名应该在 '' 这些引号中,tensile-site-168620.temp.temp
然后更新语句就可以工作了。感谢您的帮助。