Reference

MetricsQL transforms

Shape complete query intervals, fill gaps and work with histogram buckets.

Unlike sliding rollups, range_* transforms summarize the entire returned MetricsQL interval. running_* transforms accumulate from the start of that interval. Their meaning depends on the range request’s start, end and step.

from metricraft import QueryBuilder as Q

query = Q.from_metric("queue_depth").keep_last_value().range_avg()
print(query.build(mode="metricsql"))

These methods construct expressions. They do not load samples or execute transformations in Python. histogram_quantiles() also supports an explicit Prometheus experimental form.

Methods and parameters

QueryBuilder

bitmap_and()Apply bitwise AND to sample values and a numeric mask using MetricsQL integer conversion.MetricsQL only
vm only
QueryBuilder.bitmap_and(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredNumeric scalar or scalar expression; Python bool is rejected. Computed values are evaluated by the backend.

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

bitmap_or()Apply bitwise OR to sample values and a numeric mask using MetricsQL integer conversion.MetricsQL only
vm only
QueryBuilder.bitmap_or(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredNumeric scalar or scalar expression; Python bool is rejected. Computed values are evaluated by the backend.

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

bitmap_xor()Apply bitwise XOR to sample values and a numeric mask using MetricsQL integer conversion.MetricsQL only
vm only
QueryBuilder.bitmap_xor(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredNumeric scalar or scalar expression; Python bool is rejected. Computed values are evaluated by the backend.

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

buckets_limit()Reduce the number of buckets in a MetricsQL histogram.MetricsQL only
vm only
QueryBuilder.buckets_limit(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredMaximum histogram bucket count; use a positive integer.

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

drop_empty_series()Remove MetricsQL series with no values across the requested query interval.MetricsQL only
vm only
QueryBuilder.drop_empty_series() -> QueryBuilder

No parameters.

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

histogram_quantiles()Estimate several histogram quantiles, adding a label for the requested quantile. The builder chooses dialect-specific argument ordering.
prom experimental
QueryBuilder.histogram_quantiles(label: StringInput, *quantiles: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
labelstrRequiredNonempty label name without control characters. The builder quotes names when required by the dialect.
*quantilesint | float | QueryBuilder, ...VariadicOne or more requested quantiles, normally each in [0, 1]. PromQL histogram_quantiles accepts at most 10 quantiles; MetricsQL supports its own variadic form.

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

histogram_share()Estimate the share of MetricsQL histogram observations at or below a boundary.MetricsQL only
vm only
QueryBuilder.histogram_share(bound: ScalarInput, *, bounds_label: Optional[StringInput]=None) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
boundint | float | QueryBuilderRequiredHistogram observation boundary for the cumulative share.
bounds_labelstr | NoneDefault: NoneOptional output label for lower/upper estimation bounds. Supplying it selects a MetricsQL-only argument form.

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

interpolate()Fill gaps between known MetricsQL samples by linear interpolation.MetricsQL only
vm only
QueryBuilder.interpolate() -> QueryBuilder

No parameters.

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

keep_last_value()Fill gaps using the preceding known sample in a MetricsQL range query.MetricsQL only
vm only
QueryBuilder.keep_last_value() -> QueryBuilder

No parameters.

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

keep_next_value()Fill gaps using the following known sample in a MetricsQL range query.MetricsQL only
vm only
QueryBuilder.keep_next_value() -> QueryBuilder

No parameters.

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

limit_offset()Skip a number of output series and return at most the requested limit.MetricsQL only
vm only
QueryBuilder.limit_offset(limit: ScalarInput, offset: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
limitint | float | QueryBuilderRequiredMaximum number of output series; use a nonnegative integer. Backend handles computed values.
offsetint | float | QueryBuilderRequiredNumber of output series to skip; use a nonnegative integer.

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

prometheus_buckets()Convert VictoriaMetrics histogram bucket labels to Prometheus le bucket labels.MetricsQL only
vm only
QueryBuilder.prometheus_buckets() -> QueryBuilder

No parameters.

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

rand()Create MetricsQL uniformly distributed random values, optionally using a seed.MetricsQL only
classmethodvm only
QueryBuilder.rand(seed: Optional[ScalarInput]=None) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
seedint | float | QueryBuilder | NoneDefault: NoneOptional scalar random seed. None uses backend default seeding; the builder does not generate random samples locally.

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

rand_exponential()Create MetricsQL exponentially distributed random values, optionally using a seed.MetricsQL only
classmethodvm only
QueryBuilder.rand_exponential(seed: Optional[ScalarInput]=None) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
seedint | float | QueryBuilder | NoneDefault: NoneOptional scalar random seed. None uses backend default seeding; the builder does not generate random samples locally.

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

rand_normal()Create MetricsQL normally distributed random values, optionally using a seed.MetricsQL only
classmethodvm only
QueryBuilder.rand_normal(seed: Optional[ScalarInput]=None) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
seedint | float | QueryBuilder | NoneDefault: NoneOptional scalar random seed. None uses backend default seeding; the builder does not generate random samples locally.

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

range_avg()Compute the arithmetic mean across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_avg() -> QueryBuilder

No parameters.

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("queue_depth").range_avg().build(mode="metricsql")
range_first()Compute the first value across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_first() -> QueryBuilder

No parameters.

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

range_last()Compute the last value across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_last() -> QueryBuilder

No parameters.

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

range_linear_regression()Replace a MetricsQL range-query series with its fitted regression line.MetricsQL only
vm only
QueryBuilder.range_linear_regression() -> QueryBuilder

No parameters.

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

range_mad()Compute the median absolute deviation across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_mad() -> QueryBuilder

No parameters.

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

range_max()Compute the maximum across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_max() -> QueryBuilder

No parameters.

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

range_median()Compute the median across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_median() -> QueryBuilder

No parameters.

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

range_min()Compute the minimum across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_min() -> QueryBuilder

No parameters.

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

range_normalize()Normalize MetricsQL range-query sample values using the range's minimum and maximum.MetricsQL only
vm only
QueryBuilder.range_normalize(*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.

range_quantile()Replace a MetricsQL range-query series with its quantile over the full requested interval.MetricsQL only
vm only
QueryBuilder.range_quantile(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredRequested quantile, normally in [0, 1]. Out-of-range values follow backend quantile semantics; the builder does not universally reject them.

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

range_stddev()Compute the population standard deviation across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_stddev() -> QueryBuilder

No parameters.

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

range_stdvar()Compute the population variance across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_stdvar() -> QueryBuilder

No parameters.

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

range_sum()Compute the sum across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_sum() -> QueryBuilder

No parameters.

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

range_trim_outliers()Remove samples whose distance from the interval median exceeds a scaled median absolute deviation.MetricsQL only
vm only
QueryBuilder.range_trim_outliers(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredMultiplier applied to median absolute deviation; use a nonnegative value. Evaluated by the backend.

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

range_trim_spikes()Remove the requested fraction of upper and lower extreme samples across the query interval.MetricsQL only
vm only
QueryBuilder.range_trim_spikes(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredFraction of extreme samples to trim, normally in [0, 1]. Evaluated by the backend.

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

range_trim_zscore()Remove samples whose absolute z-score exceeds the supplied threshold.MetricsQL only
vm only
QueryBuilder.range_trim_zscore(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredNonnegative absolute z-score threshold, such as 3.

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

range_zscore()Compute the z-score across the full MetricsQL query interval, rather than a sliding lookbehind window.MetricsQL only
vm only
QueryBuilder.range_zscore() -> QueryBuilder

No parameters.

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

remove_resets()Adjust a counter sequence to remove downward reset discontinuities.MetricsQL only
vm only
QueryBuilder.remove_resets() -> QueryBuilder

No parameters.

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

ru()Compute MetricsQL resource utilization as a percentage from the receiver's free capacity and the supplied maximum capacity.MetricsQL only
vm only
QueryBuilder.ru(value: ScalarInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
valueint | float | QueryBuilderRequiredPositive maximum resource capacity used as the utilization denominator.

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

running_avg()Compute the running arithmetic mean from the start of a MetricsQL range query up to each evaluation point.MetricsQL only
vm only
QueryBuilder.running_avg() -> QueryBuilder

No parameters.

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

running_max()Compute the running maximum from the start of a MetricsQL range query up to each evaluation point.MetricsQL only
vm only
QueryBuilder.running_max() -> QueryBuilder

No parameters.

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

running_min()Compute the running minimum from the start of a MetricsQL range query up to each evaluation point.MetricsQL only
vm only
QueryBuilder.running_min() -> QueryBuilder

No parameters.

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

running_sum()Compute the running sum from the start of a MetricsQL range query up to each evaluation point.MetricsQL only
vm only
QueryBuilder.running_sum() -> QueryBuilder

No parameters.

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

timezone_offset()Create a scalar giving a named timezone's UTC offset in seconds at evaluation time.MetricsQL only
classmethodvm only
QueryBuilder.timezone_offset(timezone: StringInput) -> QueryBuilder
Parameters
Parameter / typeMeaning and accepted values
timezonestrRequiredIANA timezone name such as 'Europe/Paris' or 'UTC'. Existence is checked by the backend timezone database.

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

ttf()Estimate time to failure (time until zero) from a decreasing gauge.MetricsQL only
vm only
QueryBuilder.ttf() -> QueryBuilder

No parameters.

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.