Bigquery tables.list()只返回1000个表?

时间:2014-05-09 21:22:17

标签: google-bigquery

我在下面的代码中做错了什么,或者这是一个错误?

 com.google.api.services.bigquery.Bigquery.Tables.List list =
          bigquery.tables().list(PROJECT_ID, datasetid);
      list.setMaxResults((long) 5000);
      return list.execute().getTables();

此数据集中有超过1000个表。

1 个答案:

答案 0 :(得分:2)

一个请求中将返回的最大表数为1000.但是,您还应在响应中收到pageToken,可用于分析其他结果。

如:

List<Table> tables = new ArrayList<>();
com.google.api.services.bigquery.Bigquery.Tables.List list =
  bigquery.tables().list(PROJECT_ID, datasetid);
list.setMaxResults(5000L);
String nextPageToken = null;
while (true) {
  if (nextPageToken != null) {
    list.setPageToken(nextPageToken);
  }
  TableList result = list.execute();
  tables.addAll(result.getTables());
  if (result.getNextPageToken() == null) {
    break;
  } else {
    nextPageToken = result.getNextPageToken();
  }
}
return tables;