通過這樣做,因爲它是我得到的錯誤Exceeded rate limits: too many table update operations for this table.
我知道,我有表更新限制:查詢多個表到一個
Maximum rate of table update operations: 1 operation every 2 seconds (insert, patch, update, jobs output).
但我的問題是我應該如何處理呢?在循環中插入作業之後添加一些延遲?
我必須從500個聯邦表(谷歌驅動器表)更新目標表,我不能一次使用wilcards或多個選擇,因爲當其中一個用戶鍵入字符串到整數字段整個查詢將失敗獲取失敗解析錯誤。
所以我決定環路它在Python(再創建cron作業)通過將插入工作爲每個表
你知道它的任何更多effectient方法?
EDIT1代碼添加:
def insert(query, tableid, disposition):
job_body = {
"configuration": {
"query": {
"query": query,
"useLegacySql": True,
"destinationTable": {
"datasetId": "dataset",
"projectId": "myproject",
"tableId": tableid
},
"writeDisposition": disposition
}
}
}
query_request.insert(
projectId=PROJECT_NUMBER,
body=job_body).execute()
class MainPage(webapp2.RequestHandler):
def get(self):
query = "SELECT * FROM [%s]"
for table in table_list():
if int(table['id'][-4:]) <= 600:
insert(query % table['id'], 'users_data_p1', "WRITE_APPEND")
else:
insert(query % table['id'], 'users_data_p2', "WRITE_APPEND")
app = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
*通過這樣做...我決定循環它在python * - 這將有助於看到它**(即代碼)。 – Parfait