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

时间:2014-08-14 21:41:03

标签: google-bigquery

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

另一件事是它总是返回相同的结果集,虽然pagetoken应该是下一页。

非常感谢任何澄清!

UT;

    String query="SELECT customer_id, email_domain  FROM datamart.customer_fact limit 10;";

    List<TableRow> tr1 = bq.GetRowsBQTable(query);
    List<TableRow> tr2 = bq.GetRowsBQTable(query);
    List<TableRow> tr3 = bq.GetRowsBQTable(query);

方法:

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;
}   

1 个答案:

答案 0 :(得分:1)

公共问题跟踪器上的已知问题:https://code.google.com/p/google-bigquery/issues/detail?id=132