通过这样做,因为它是我得到的错误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