90k行のクエリ結果をダウンロードしようとしていますが(この量はWeb UIとその結果のオブジェクトを示しています)、イテレータでは130kを超えるアイテムが次のように取得されます:BigQuery - Java APIを使用して結果を反復する方法
QueryRequest queryRequest = QueryRequest
.newBuilder("......")
.setUseLegacySql(true)
.build();
QueryResponse response = bigquery.query(queryRequest);
QueryResult result = response.getResult();
Integer c = 0;
while(result != null){
Iterator<List<FieldValue>> iter = result.iterateAll();
while(iter.hasNext()){
iter.next();
c++;
}
result = result.getNextPage();
}
読み込みの最後には約130Kですが、reuslt.getTotalRows()
には90Kが含まれています。
あなたは私が正しく行っていないことについて何か考えていますか?
私はあなたがバグのいくつかの並べ替えを打ったと思います。私は再現することができます。おかしいです。また、 'setPageSize()'パラメータを設定するとさらに悪化します。たとえば、5Kの結果の 'limit'、' setPageSize(1000L) 'を持つクエリを発行し、それが15K回反復したものです。バグは 'getNextPage()'メソッドにあると思います。あなたのコードは、 - > https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/bigquery/cloud-client/src/main/java/com/example/bigquery/SimpleApp.javaでよく見えます。 。 Googleの担当者が明確にできるかどうか確認するために問題を提起しました - > https://github.com/GoogleCloudPlatform/java-docs-samples/issues/506 –
ありがとう!あなたの問題をgithubに統合しました。私はgoogleの人が従来のsQL標準に切り替えることに気づいた。 –