我有一个包含数百万条记录的BigQuery表。
我能够使用GetQueryResultsResponse.getPageToken()
方法进行分页。如果底层BigQuery表获得新插入,则getPageToken返回null。如果没有发生插入,pageToken工作正常。
如果在bigquery表上发生插入操作,如何避免这种情况并能够遍历表?
我正在使用google-api-services-bigquery v2-rev330-1.22.0“
答案 0 :(得分:1)
不清楚,但我认为你在谈论tables.list分页(查询结果不能将记录流入其中)
在这种情况下 - 您可以使用startIndex(以及maxResults)代替pageToken
知道项目计数响应(实际页面大小),您始终可以计算要请求的下一页的起始索引(不使用pageToken)。
在您的应用程序中围绕这些启动索引进行一些额外的管理 - 您可以在两个方向(下一个和上一个)管理分页
当然,您可以随时管理导航:
第一页(startIndex = 1)
和
最后一页(startIndex = totalRows - 预期的页面大小)。
还有一点需要注意:如果表格处于流式传输状态(一次列出流式缓冲区),totalRows
可能无法使用 - 在这种情况下,您可以使用对Tables: get API的额外调用并获得numRows