Reference

Label operations

Transform output labels without modifying source expressions.

Selector matchers choose input series. Label functions here transform or filter the result of an expression, so they can be applied after functions and aggregation.

from metricraft import QueryBuilder as Q

query = Q.from_metric("up").label_replace("host", "$1", "instance", "([^:]+):.*")
print(query.build(mode="promql"))

Mapping APIs take explicit two-string tuples. Replacements use backend capture references such as $1; Python interpolation is not involved. MetricsQL-only operations are marked individually.

Methods and parameters

QueryBuilder

alias()Replace the output metric name with a literal name.MetricsQL only
vm only
QueryBuilder.alias(name: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
namestrRequiredNonempty metric/function/binding name. It is validated by the relevant constructor, not inserted as raw query syntax.

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

drop_common_labels()Remove labels shared with identical values across all input series.MetricsQL only
vm only
QueryBuilder.drop_common_labels(*others: ScalarInput) -> 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.

keep_metric_names()Retain metric names through an eligible MetricsQL function or binary expression.MetricsQL only
vm only
QueryBuilder.keep_metric_names() -> QueryBuilder

No parameters.

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

label_copy()Copy source labels to destination labels in pair order; missing sources are skipped.MetricsQL only
vm only
QueryBuilder.label_copy(*pairs: Tuple[str, str]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
*pairstuple[str, str], ...VariadicPass each mapping as a two-string tuple, in order. label_copy/move use source and destination names; label_map uses source and destination values.

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

label_del()Remove the named output labels.MetricsQL only
vm only
QueryBuilder.label_del(*labels: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
*labelsstr, ...VariadicLabel names, passed separately. Grouping and matching lists must not contain duplicates. An empty grouping list is allowed; function-specific arity is checked by Rust.

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

label_graphite_group()Construct a metric name from selected zero-based dot-separated components of its existing name.MetricsQL only
vm only
QueryBuilder.label_graphite_group(*groups: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
*groupsint, ...VariadicNonnegative, zero-based dot-separated metric-name component indexes. Use whole numbers; the SDK rejects bool but does not enforce integer/index bounds for this function.

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

label_join()Join source label values using a separator and write the result to a destination label.
QueryBuilder.label_join(destination: StringInput, separator: StringInput, *sources: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
destinationstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
separatorstrRequiredLiteral separator between source label values; may be empty.
*sourcesstr, ...VariadicSource label names to concatenate, in the supplied order.

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

label_keep()Retain only the named output labels.MetricsQL only
vm only
QueryBuilder.label_keep(*labels: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
*labelsstr, ...VariadicLabel names, passed separately. Grouping and matching lists must not contain duplicates. An empty grouping list is allowed; function-specific arity is checked by Rust.

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

label_lowercase()Convert the values of the named labels to lowercase.MetricsQL only
vm only
QueryBuilder.label_lowercase(*labels: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
*labelsstr, ...VariadicLabel names, passed separately. Grouping and matching lists must not contain duplicates. An empty grouping list is allowed; function-specific arity is checked by Rust.

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

label_map()Map exact label values through ordered source-value/destination-value pairs.MetricsQL only
vm only
QueryBuilder.label_map(label: StringInput, *pairs: Tuple[str, str]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
*pairstuple[str, str], ...VariadicPass each mapping as a two-string tuple, in order. label_copy/move use source and destination names; label_map uses source and destination values.

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

label_match()Keep series whose named label matches an anchored backend regular expression.MetricsQL only
vm only
QueryBuilder.label_match(label: StringInput, regex: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
regexstrRequiredBackend RE2 pattern. Capture references in replacements use $1 or named captures. Query quoting does not make the regex literal.

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

label_mismatch()Keep series whose named label does not match an anchored backend regular expression.MetricsQL only
vm only
QueryBuilder.label_mismatch(label: StringInput, regex: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
regexstrRequiredBackend RE2 pattern. Capture references in replacements use $1 or named captures. Query quoting does not make the regex literal.

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

label_move()Move source labels to destinations in pair order and remove their source labels.MetricsQL only
vm only
QueryBuilder.label_move(*pairs: Tuple[str, str]) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
*pairstuple[str, str], ...VariadicPass each mapping as a two-string tuple, in order. label_copy/move use source and destination names; label_map uses source and destination values.

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

label_replace()Match one source label with a regex and write the expanded replacement to a destination label.
QueryBuilder.label_replace(destination: StringInput, replacement: StringInput, source: StringInput, regex: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
destinationstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
replacementstrRequiredReplacement text with optional backend capture references such as '$1'. Encoded as a string literal.
sourcestrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
regexstrRequiredBackend RE2 pattern. Capture references in replacements use $1 or named captures. Query quoting does not make the regex literal.

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

Example

from metricraft import QueryBuilder as Q

Q.from_metric("up").label_replace("host", "$1", "instance", "([^:]+):.*").build(mode="promql")
label_set()Set literal output label values without changing the input expression.MetricsQL only
vm only
QueryBuilder.label_set(**labels: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
**labelsstr, by keywordVariadicLabel-name/string-value pairs, e.g. job='api'. Use **mapping for names that are not Python identifiers.

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

label_transform()Replace every regex match within a label value using capture expansion.MetricsQL only
vm only
QueryBuilder.label_transform(label: StringInput, regex: StringInput, replacement: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
regexstrRequiredBackend RE2 pattern. Capture references in replacements use $1 or named captures. Query quoting does not make the regex literal.
replacementstrRequiredReplacement text with optional backend capture references such as '$1'. Encoded as a string literal.

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

label_uppercase()Convert the values of the named labels to uppercase.MetricsQL only
vm only
QueryBuilder.label_uppercase(*labels: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
*labelsstr, ...VariadicLabel names, passed separately. Grouping and matching lists must not contain duplicates. An empty grouping list is allowed; function-specific arity is checked by Rust.

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

label_value()Use a numeric label value as the sample value; unparseable values yield no samples.MetricsQL only
vm only
QueryBuilder.label_value(label: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.

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

labels_equal()Keep series whose selected label values are all equal.MetricsQL only
vm only
QueryBuilder.labels_equal(first: StringInput, second: StringInput, *others: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
firststrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
secondstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
*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.

Explore the docs

Find your next step

Search guides, examples and the Python API.