Aller au contenu principal

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 limit10 000
Comportement sans limitéquivalent à limit: 10 000 avec contrôle de dépassement
Ordre des résultatsindé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.