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.
Mandatory filters apply to queries against this endpoint. They do not apply to downloads: there a size check bounds the request, so filters are optional.
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.