Pagination
Die Schnittstelle stellt keine Offset- oder Cursor-Pagination bereit.
Stattdessen wird die Ergebnismenge je Abfrage über das Argument limit
und über Filter auf einer geeigneten Spalte begrenzt.
Mengenbegrenzung
| Eigenschaft | Wert |
|---|---|
Maximalwert für limit | 10 000 |
Verhalten ohne limit | wie limit: 10 000 mit Überlaufprüfung |
| Ergebnisreihenfolge | nicht definiert |
Es findet keine stille Kürzung statt: Eine Abfrage, deren Ergebnismenge die Obergrenze überschreitet, wird mit einer Fehlermeldung zurückgewiesen.
Fehlermeldungen
Bei einem limit-Wert über 10 000:
limit cannot exceed 10000 rows per query
Bei einer Abfrage ohne limit, deren Ergebnismenge die Obergrenze
überschreitet:
Query returned more than 10000 rows. Please narrow your query using
filters or specify a limit.
Iteration über Filterfenster
Grössere Ergebnismengen werden in mehrere Abfragen mit jeweils
disjunkten Filterfenstern zerlegt. Die Wahl des Filterfelds richtet
sich nach den verfügbaren Filtern der Tabelle. Üblich sind Zeitfenster
über timestamp, eine Iteration über Stationen oder über einen anderen
diskriminierenden Schlüssel der Tabelle.
query Window($from: AWSDateTime!, $to: AWSDateTime!) {
water {
observations {
data_1day_mean(
where: {
station: { no: { _eq: "2009" } }
timestamp: { _gte: $from, _lt: $to }
}
) {
timestamp
value
unitSymbol
}
}
}
}
Die Fenster werden client-seitig in der gewünschten Reihenfolge zusammengeführt. Beispielcode dazu findet sich unter Python.
Fenstergrösse
Die geeignete Fenstergrösse ergibt sich aus der erwarteten Anzahl Datensätze pro Fenster. Sie ist so zu wählen, dass jede Abfrage zuverlässig unter 10 000 Datensätzen bleibt – mit Reserve für die typische Schwankung der Datendichte. Die zu erwartende Datendichte ist auf der jeweiligen Datensatz-Seite beschrieben.