Google bigquery 分块BigQuery结果

Google bigquery 分块BigQuery结果,google-bigquery,chunking,Google Bigquery,Chunking,您好,我正在使用,在理解RowIterator类如何工作时遇到了一些问题。给定查询作业id,我希望以固定大小的块获取结果行 我首先使用客户机运行查询 query_job = client.query(query, job_config=job_config) 后来我找到了这样的工作- job = client.get_job(query_job.job_id) result_iter = job.result() 我想知道job.result()是如何获得结果的。它是从bigquery结果表

您好,我正在使用,在理解RowIterator类如何工作时遇到了一些问题。给定查询作业id,我希望以固定大小的块获取结果行

我首先使用客户机运行查询

query_job = client.query(query, job_config=job_config)
后来我找到了这样的工作-

job = client.get_job(query_job.job_id)
result_iter = job.result()
我想知道job.result()是如何获得结果的。它是从bigquery结果表中一次获取一行结果,还是将整个结果存储在内存中。此外,我如何或在何处指定要以固定的chunksize获取结果并获取下一页标记


谢谢

查看RowTerator代码,它将尝试使用一个GET请求读取所有结果,然后在内存中遍历它们

无法在job.result()中设置max_results,因此它将受到BigQuery默认限制100.000行[1]和10MB总大小的限制。如果结果不符合此限制,迭代器将尝试读取下一页

列表行API[2]允许您设置最大结果和页面标记。如果您的目标是在定义大小的页面中读取所有作业结果,则可以使用此api为每个页面创建单独的行计数器。您可以从迭代器[3]获取下一页标记。希望这有帮助

[1]

[2]


[3]

那么您的意思是,我应该获取运行查询时创建的临时表的表引用,并使用列表行?是的。或者,您可以将作业配置中的目标_表设置为已知的表引用。