Zum Hauptinhalt springen

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

EigenschaftWert
Maximalwert für limit10 000
Verhalten ohne limitwie limit: 10 000 mit Überlaufprüfung
Ergebnisreihenfolgenicht 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.