Skip to main content

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

OperatorMeaningValue type
_eqequal tosingle value
_neqnot equal tosingle value
_incontained inlist
_ninnot contained inlist
_gtgreater thansingle value
_gtegreater than or equalsingle value
_ltless thansingle value
_lteless than or equalsingle value
_betweenwithin interval [start, end)list of two elements
_is_nullis null (true) or is not null (false)boolean
_startswithstarts withstring

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

TypeFilter syntax
Stringdouble quotes, e.g. "Aufgebaut"
Int, Floatnumeric without quotes
AWSDateTimeISO-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.