Reference

Selectors & filters

Choose metrics and attach literal label constraints.

Apply matchers before transforming a selector. Equality values are escaped; regex methods accept intentional RE2 patterns. A regex may match many values even though its query-string representation is safely quoted.

from metricraft import QueryBuilder as Q

query = (Q.from_metric("http_requests_total")
         .where_eq("environment", "production")
         .where_regex("status", "5.."))
print(query.build(mode="promql"))

All matchers on one selector must hold. An absent label behaves as an empty value. Application code still chooses which metric names, operations and label names users may select.

Methods and parameters

QueryBuilder

filter()Keep series whose label equals a literal value; an absent label behaves like an empty string.
QueryBuilder.filter(label: str, value: Optional[StringInput]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
valuestrRequiredLabel value or RE2 pattern for regex matchers. Encoded as a quoted query string; empty strings are allowed.

Returns QueryBuilder — a new immutable expression sharing unchanged native subtrees. The receiver is unchanged; no data is queried.

or_selector()Combine selector alternatives inside a MetricsQL selector. This is different from the vector set operator or_().MetricsQL only
vm only
QueryBuilder.or_selector(*others: QueryBuilder) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
*othersQueryBuilder, ...VariadicAdditional input expressions. Multiple aggregation inputs and union-style transforms are MetricsQL-only; ordinary PromQL aggregation takes just the receiver.

Returns QueryBuilder — a new immutable expression sharing unchanged native subtrees. The receiver is unchanged; no data is queried.

where()Add one label matcher to a selector. Compose filters before range, function or aggregation operations.
QueryBuilder.where(label: str, operator: Matcher, value: Optional[StringInput]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
operatorstrRequiredExactly '=', '!=', '=~' or '!~'. Raw operators or query fragments are rejected.
valuestrRequiredLabel value or RE2 pattern for regex matchers. Encoded as a quoted query string; empty strings are allowed.

Returns QueryBuilder — a new immutable expression sharing unchanged native subtrees. The receiver is unchanged; no data is queried.

where_eq()Keep series whose label equals a literal value; an absent label behaves like an empty string.
QueryBuilder.where_eq(label: str, value: Optional[StringInput]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
valuestrRequiredLabel value or RE2 pattern for regex matchers. Encoded as a quoted query string; empty strings are allowed.

Returns QueryBuilder — a new immutable expression sharing unchanged native subtrees. The receiver is unchanged; no data is queried.

where_ne()Keep series whose label differs from a literal value.
QueryBuilder.where_ne(label: str, value: Optional[StringInput]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
valuestrRequiredLabel value or RE2 pattern for regex matchers. Encoded as a quoted query string; empty strings are allowed.

Returns QueryBuilder — a new immutable expression sharing unchanged native subtrees. The receiver is unchanged; no data is queried.

where_not_regex()Add a negated fully anchored RE2 label matcher.
QueryBuilder.where_not_regex(label: str, value: Optional[StringInput]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
valuestrRequiredLabel value or RE2 pattern for regex matchers. Encoded as a quoted query string; empty strings are allowed.

Returns QueryBuilder — a new immutable expression sharing unchanged native subtrees. The receiver is unchanged; no data is queried.

where_regex()Add a fully anchored RE2 label matcher. The pattern is escaped as query data but remains a regular expression.
QueryBuilder.where_regex(label: str, value: Optional[StringInput]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
valuestrRequiredLabel value or RE2 pattern for regex matchers. Encoded as a quoted query string; empty strings are allowed.

Returns QueryBuilder — a new immutable expression sharing unchanged native subtrees. The receiver is unchanged; no data is queried.

Explore the docs

Find your next step

Search guides, examples and the Python API.