Zum Hauptinhalt springen

Filter und Operatoren

Jede Tabelle akzeptiert ein Argument where zur Einschränkung der Ergebnismenge. Ein Filterausdruck ist ein verschachteltes Objekt aus Feldnamen, Vergleichsoperatoren und Werten. Mehrere Feldfilter werden implizit mit AND verknüpft.

Aufbau

where: {
station: { no: { _eq: "2009" } }
timestamp: { _gte: "2026-01-01T00:00:00Z", _lt: "2026-02-01T00:00:00Z" }
}

Der Ausdruck wird als logisches UND aller enthaltenen Bedingungen ausgewertet.

Vergleichsoperatoren

OperatorBedeutungWerttyp
_eqgleicheinzelner Wert
_nequngleicheinzelner Wert
_inenthalten inListe
_ninnicht enthalten inListe
_gtgrösser alseinzelner Wert
_gtegrösser oder gleicheinzelner Wert
_ltkleiner alseinzelner Wert
_ltekleiner oder gleicheinzelner Wert
_betweenim Intervall [start, end)Liste mit zwei Elementen
_is_nullist null (true) oder ist nicht null (false)Boolean
_startswithbeginnt mitZeichenkette

Beispiele:

where: {
parameterName: { _in: ["Q", "W", "WT"] }
value: { _gte: 0 }
}
where: {
timestamp: { _between: ["2026-01-01T00:00:00Z", "2026-02-01T00:00:00Z"] }
}

Logische Kombinatoren

Für komplexere Bedingungen stehen die Kombinatoren _and, _or und _not zur Verfügung.

where: {
_or: [
{ station: { no: { _eq: "2009" } } }
{ station: { no: { _eq: "2018" } } }
]
timestamp: { _gte: "2026-01-01T00:00:00Z" }
}
where: {
_not: { parameterName: { _eq: "Q" } }
timestamp: { _gte: "2026-01-01T00:00:00Z" }
}

Die maximale Verschachtelungstiefe von _and, _or und _not beträgt fünf Ebenen. Tiefere Verschachtelungen werden mit folgender Meldung abgelehnt:

Filter nesting depth exceeds maximum of 5 levels

Filter auf verschachtelten Objekten

Felder eines verschachtelten Objekts werden über dieselbe Objektstruktur referenziert, in der sie auch in der Abfrage erscheinen. So wird etwa die Stationsnummer der eingebetteten Station gefiltert:

where: { station: { no: { _eq: "2009" } } }

Datentypen

TypSchreibweise im Filter
Stringdoppelte Anführungszeichen, z. B. "Aufgebaut"
Int, Floatnumerisch ohne Anführungszeichen
AWSDateTimeISO-8601 in UTC, z. B. "2026-01-01T00:00:00Z"
Liste[…, …]
null-Prüfung{ _is_null: true } bzw. { _is_null: false }

Pflichtfilter

Einzelne Tabellen verlangen mindestens einen Filter auf einem festgelegten Feld, um Vollscans zu vermeiden. Welche Felder pflicht sind, ist auf der jeweiligen Datensatz-Seite vermerkt.

Fehlt ein Pflichtfilter, antwortet die Schnittstelle mit einer Meldung der Form:

Query requires at least one of these filters: <feld1>, <feld2>.
This prevents expensive full table scans.

Feldnamen-Schreibweise

Filterfelder tragen dieselben Namen wie in der Abfrage — die camelCase-Feldnamen des Schemas, einsehbar im GraphiQL Explorer. Verschachtelte Objekte werden über ihre Objektstruktur gefiltert (z. B. station: { no: … }).

Unbekannte oder nicht filterbare Felder werden mit einer Validierungsmeldung abgelehnt.