Module subquery

Module subquery 

Source
Expand description

Subquery expression parsing for PromQL.

Subqueries allow evaluating an instant vector expression over a time range, producing a range vector. This is useful for applying range vector functions (like avg_over_time) to expressions that would otherwise produce instant vectors.

§Syntax

expr[range:step]  # With explicit step
expr[range:]      # With default step
  • range: The lookback window (required)
  • step: The evaluation interval (optional; uses default if omitted)

§Examples

some_metric[5m:1m]              # Evaluate every minute over 5 minutes
rate(http_requests[5m])[30m:1m] # Rate over 5m, sampled every minute for 30m
avg_over_time(metric[5m:])      # Average using default step

§Code Example

use rusty_promql_parser::parser::subquery::subquery_range;

let (rest, (range, step)) = subquery_range("[5m:1m]").unwrap();
assert!(rest.is_empty());
assert_eq!(range.as_millis(), 5 * 60 * 1000);
assert_eq!(step.unwrap().as_millis(), 60 * 1000);

Functions§

subquery_range
Parse a subquery range: [range:step] or [range:]