当BigQuery Table被另一个应用程序插入时,BigQuery GetQueryResultsResponse.getPageToken()返回null

时间:2017-01-12 20:38:05

标签: google-bigquery

我有一个包含数百万条记录的BigQuery表。

我能够使用GetQueryResultsResponse.getPageToken()方法进行分页。如果底层BigQuery表获得新插入,则getPageToken返回null。如果没有发生插入,pageToken工作正常。

如果在bigquery表上发生插入操作,如何避免这种情况并能够遍历表?

我正在使用google-api-services-bigquery v2-rev330-1.22.0“

1 个答案:

答案 0 :(得分:1)

不清楚,但我认为你在谈论tables.list分页(查询结果不能将记录流入其中

在这种情况下 - 您可以使用startIndex(以及maxResults)代替pageToken 知道项目计数响应(实际页面大小),您始终可以计算要请求的下一页的起始索引(不使用pageToken)。
在您的应用程序中围绕这些启动索引进行一些额外的管理 - 您可以在两个方向(下一个和上一个)管理分页 当然,您可以随时管理导航:
第一页(startIndex = 1)

最后一页(startIndex = totalRows - 预期的页面大小)。

还有一点需要注意:如果表格处于流式传输状态(一次列出流式缓冲区),totalRows可能无法使用 - 在这种情况下,您可以使用对Tables: get API的额外调用并获得numRows