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',但解釋器仍然應該拋出一個錯誤。要求確認。 –