Google bigquery 大查询分页继续返回相同的pageToken

Google bigquery 大查询分页继续返回相同的pageToken,google-bigquery,Google Bigquery,传递给该方法的查询仅返回10行用于UT目的,尽管该表有数百万行。在该方法中,我将maxresult集设置为5,这样我需要调用该方法两次,然后第三次调用时应不返回任何内容。然而,无论我做什么,pagetoken都是相同的,无论查询返回多少行或setmaxresult为1或10 另一件事是它总是返回相同的结果集,尽管pagetoken应该用于下一页 如有任何澄清,我们将不胜感激 UT String query=“从datamart.customer\u事实限制10;中选择客户\u id、电子邮件\u

传递给该方法的查询仅返回10行用于UT目的,尽管该表有数百万行。在该方法中,我将maxresult集设置为5,这样我需要调用该方法两次,然后第三次调用时应不返回任何内容。然而,无论我做什么,pagetoken都是相同的,无论查询返回多少行或setmaxresult为1或10

另一件事是它总是返回相同的结果集,尽管pagetoken应该用于下一页

如有任何澄清,我们将不胜感激

UT

String query=“从datamart.customer\u事实限制10;中选择客户\u id、电子邮件\u域”;
List tr1=bq.GetRowsBQTable(查询);
List tr2=bq.GetRowsBQTable(查询);
List tr3=bq.GetRowsBQTable(查询);
方法:

public List<TableRow> GetRowsBQTable(String Query) throws IOException
{
    if (isDrained) {
        isDrained=false;
        QueryRequest queryRequest = new QueryRequest().setQuery(Query);
        queryRequest.setMaxResults(maxResults);
        queryResponse = bq.jobs().query(bqProjectId, queryRequest).execute();
        if (queryResponse.getJobComplete()) {
            List<TableRow> tr= queryResponse.getRows();
            pageToken = queryResponse.getPageToken();
            return tr;
          }
    }
    else
    {
          GetQueryResultsResponse queryResults = bq.jobs()
                  .getQueryResults(bqProjectId, queryResponse.getJobReference().getJobId())
                  .setPageToken(pageToken).execute();           
          if (queryResults.getJobComplete()) {
                List<TableRow> tr= queryResponse.getRows();
                pageToken = queryResponse.getPageToken();
                return tr;
          }

    }
    return null;
}   
public List GetRowsBQTable(字符串查询)引发IOException
{
如果(已训练){
isDrained=false;
QueryRequest QueryRequest=新建QueryRequest().setQuery(查询);
queryRequest.setMaxResults(maxResults);
queryResponse=bq.jobs().query(bqprojectd,queryRequest).execute();
if(queryResponse.getJobComplete()){
List tr=queryResponse.getRows();
pageToken=queryResponse.getPageToken();
返回tr;
}
}
其他的
{
GetQueryResultsResponse queryResults=bq.jobs()
.getQueryResults(bqProjectId、queryResponse.getJobReference().getJobId())
.setPageToken(pageToken).execute();
if(queryResults.getJobComplete()){
List tr=queryResponse.getRows();
pageToken=queryResponse.getPageToken();
返回tr;
}
}
返回null;
}   

公共问题跟踪器上的已知问题:

能否提供遇到此错误的表的名称?如果你不想公开提及,你能把它发电子邮件给谷歌的蒂加尼吗?这是一个已知的bug已经有一段时间了,但我们还没有找到一个可复制的场景。能够查看表元数据(表大小、创建方法、分区计数等)将非常有助于BigQuery团队跟踪问题。感谢Jordan对此进行研究。我已经通过电子邮件发送了信息。。。
public List<TableRow> GetRowsBQTable(String Query) throws IOException
{
    if (isDrained) {
        isDrained=false;
        QueryRequest queryRequest = new QueryRequest().setQuery(Query);
        queryRequest.setMaxResults(maxResults);
        queryResponse = bq.jobs().query(bqProjectId, queryRequest).execute();
        if (queryResponse.getJobComplete()) {
            List<TableRow> tr= queryResponse.getRows();
            pageToken = queryResponse.getPageToken();
            return tr;
          }
    }
    else
    {
          GetQueryResultsResponse queryResults = bq.jobs()
                  .getQueryResults(bqProjectId, queryResponse.getJobReference().getJobId())
                  .setPageToken(pageToken).execute();           
          if (queryResults.getJobComplete()) {
                List<TableRow> tr= queryResponse.getRows();
                pageToken = queryResponse.getPageToken();
                return tr;
          }

    }
    return null;
}