Pagination
L'interface ne propose pas de pagination par offset ou par curseur.
L'ensemble de résultats par requête est borné par l'argument limit
et par des filtres sur une colonne appropriée.
Limite de lignes
| Propriété | Valeur |
|---|---|
Valeur maximale de limit | 10 000 |
Comportement sans limit | équivalent à limit: 10 000 avec contrôle de dépassement |
| Ordre des résultats | indéfini |
Il n'y a pas de troncature silencieuse : toute requête dont l'ensemble de résultats dépasse la limite est rejetée par un message d'erreur.
Messages d'erreur
Pour une valeur de limit supérieure à 10 000 :
limit cannot exceed 10000 rows per query
Pour une requête sans limit dont l'ensemble de résultats dépasse la
limite :
Query returned more than 10000 rows. Please narrow your query using
filters or specify a limit.
Itération sur des fenêtres de filtre
Les ensembles plus larges sont découpés en plusieurs requêtes avec
des fenêtres de filtre disjointes. Le choix du champ de filtre
dépend des filtres disponibles sur la table. Les motifs habituels
sont des fenêtres temporelles sur timestamp, une itération sur les
stations, ou une itération sur une autre clé discriminante de la
table.
query Window($from: AWSDateTime!, $to: AWSDateTime!) {
water {
observations {
data_1day_mean(
where: {
station: { no: { _eq: "2009" } }
timestamp: { _gte: $from, _lt: $to }
}
) {
timestamp
value
unitSymbol
}
}
}
}
Les fenêtres sont assemblées côté client dans l'ordre souhaité. Un exemple de code se trouve sous Python.
Taille de fenêtre
La taille de fenêtre adéquate dépend du nombre attendu d'enregistrements par fenêtre. Elle doit être choisie de sorte que chaque requête reste de manière fiable en dessous de 10 000 enregistrements, avec une marge pour la variation habituelle de la densité des données. La densité attendue est décrite sur la page du jeu de données correspondante.