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.

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.