2014-05-09 2 views
0

Est-ce que je fais quelque chose de mal dans le code suivant ou est-ce un bug?Bigquery tables.list() renvoie seulement 1000 tables?

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

J'ai plus de 1000 tables dans cet ensemble de données.

+0

* "Ai-je fait quelque chose de mal dans le code suivant ou est-ce un bug?" * Probablement non plus. C'est probablement l'une des limites. –

+0

Cela ne devrait-il pas être spécifié quelque part? –

Répondre

2

Le nombre maximal de tables renvoyées dans une demande est de 1 000. Cependant, vous devez également recevoir un pageToken dans la réponse, qui peut être utilisé pour parcourir d'autres résultats.

comme dans:

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;