90k 행의 쿼리 결과 (이 양은 웹 UI와 결과 객체를 나타냄)를 다운로드하려고하는데 다음과 같이 반복기에서 130,000 개가 넘는 항목을 가져옵니다.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 표준으로 전환하고있는 것을 알아 챘다. –