Filters and operators
Each table accepts a where argument that narrows the result set. A
filter expression is a nested object of field names, comparison
operators and values. Multiple field filters are implicitly combined
with AND.
Shape
where: {
station: { no: { _eq: "2009" } }
timestamp: { _gte: "2026-01-01T00:00:00Z", _lt: "2026-02-01T00:00:00Z" }
}
The expression is evaluated as the logical AND of all contained
conditions.
Comparison operators
| Operator | Meaning | Value type |
|---|---|---|
_eq | equal to | single value |
_neq | not equal to | single value |
_in | contained in | list |
_nin | not contained in | list |
_gt | greater than | single value |
_gte | greater than or equal | single value |
_lt | less than | single value |
_lte | less than or equal | single value |
_between | within interval [start, end) | list of two elements |
_is_null | is null (true) or is not null (false) | boolean |
_startswith | starts with | string |
Examples:
where: {
parameterName: { _in: ["Q", "W", "WT"] }
value: { _gte: 0 }
}
where: {
timestamp: { _between: ["2026-01-01T00:00:00Z", "2026-02-01T00:00:00Z"] }
}
Logical combinators
For more complex conditions the combinators _and, _or and _not
are available.
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" }
}
The maximum nesting depth of _and, _or and _not is five
levels. Deeper nesting is rejected with:
Filter nesting depth exceeds maximum of 5 levels
Filters on nested objects
Fields of a nested object are referenced through the same object structure in which they appear in the query. For example, filtering on the station number of the embedded station:
where: { station: { no: { _eq: "2009" } } }
Data types
| Type | Filter syntax |
|---|---|
String | double quotes, e.g. "Aufgebaut" |
Int, Float | numeric without quotes |
AWSDateTime | ISO-8601 in UTC, e.g. "2026-01-01T00:00:00Z" |
| List | […, …] |
null check | { _is_null: true } or { _is_null: false } |
Mandatory filters
Some tables require at least one filter on a designated field in order to avoid full table scans. The required fields are listed on the respective dataset page.
When a mandatory filter is missing the endpoint responds with a message of the form:
Query requires at least one of these filters: <field1>, <field2>.
This prevents expensive full table scans.
Field name casing
Filter fields use the same names as in the query — the camelCase
field names of the schema, viewable in the
GraphiQL Explorer. Nested objects are filtered
through their object structure (e.g. station: { no: … }).
Unknown or non-filterable fields are rejected with a validation error.