Pentaho BigQuery JDBC驱动程序赢得';返回的行数不能超过100000行

Pentaho BigQuery JDBC驱动程序赢得';返回的行数不能超过100000行,pentaho,google-bigquery,Pentaho,Google Bigquery,我正在Pentaho PDI中为Google BigQuery使用starschema JDBC驱动程序: 我通过BigQueryWeb控制台执行的查询返回129993行,但是当我通过JDBC驱动程序执行相同的查询时,它只返回100000行。是否存在某种我不知道的选项或限制?StarSchema代码似乎只返回结果的第一页 这里的代码应该更新以获得其余的结果。它应该看起来像: public static GetQueryResultsResponse getQueryResults(Bigque

我正在Pentaho PDI中为Google BigQuery使用starschema JDBC驱动程序:


我通过BigQueryWeb控制台执行的查询返回129993行,但是当我通过JDBC驱动程序执行相同的查询时,它只返回100000行。是否存在某种我不知道的选项或限制?

StarSchema代码似乎只返回结果的第一页

这里的代码应该更新以获得其余的结果。它应该看起来像:

public static GetQueryResultsResponse getQueryResults(Bigquery bigquery,
        String projectId, Job completedJob) throws IOException {        
    GetQueryResultsResponse queryResult = bigquery.jobs()
            .getQueryResults(projectId,
                    completedJob.getJobReference().getJobId()).execute();
    while(queryResult.getTotalRows() > queryResult.getRows().size()) {
        queryResult.getRows().addAll(
            bigquery.jobs()
                .getQueryResults(projectId,
                        completedJob.getJobReference().getJobId())
                .setStartIndex(queryResult.getRows().size())
                .execute()
                .getRows());            
    }
    return queryResult;
}

根据Jordan的答案修改了代码,解决方案如下所示:

    public static GetQueryResultsResponse getQueryResults(Bigquery bigquery,
        String projectId, Job completedJob) throws IOException {
    GetQueryResultsResponse queryResult = bigquery.jobs()
            .getQueryResults(projectId,
                    completedJob.getJobReference().getJobId()).execute();
    long totalRows = queryResult.getTotalRows().longValue();
    if(totalRows == 0){ 
//if we don't have results we'll get a nullPointerException on the queryResult.getRows().size()
        return queryResult;
    }
    while( totalRows  > (long)queryResult.getRows().size() ) {
        queryResult.getRows().addAll(
            bigquery.jobs()
                .getQueryResults(projectId,
                        completedJob.getJobReference().getJobId())
                .setStartIndex(BigInteger.valueOf((long)queryResult.getRows().size()) )
                .execute()
                .getRows());           
    }
    return queryResult;
}
这应该可以解决问题。
还将新版本上传到了名为

的google code,我已经下载了源代码,我正试图用这些更改重新编译它。运气不太好。