Expand description
Vector and matrix selector parsing for PromQL.
Selectors are the fundamental way to query time series data in PromQL.
§Vector Selectors (Instant Vectors)
A vector selector selects a set of time series with a single sample value for each at the current timestamp.
metric_name
metric_name{label_matchers}
{label_matchers}§Matrix Selectors (Range Vectors)
A matrix selector extends a vector selector with a time range, selecting multiple samples per time series.
metric_name[5m]
metric_name{label="value"}[1h]§Label Matchers
| Operator | Description | Example |
|---|---|---|
= | Exact equality | job="prometheus" |
!= | Not equal | env!="prod" |
=~ | Regex match | path=~"/api/.*" |
!~ | Regex not match | status!~"5.." |
§Modifiers
Selectors can have optional modifiers:
- offset: Shift the time range back:
metric offset 5m - @: Pin to a specific timestamp:
metric @ 1609459200
§Examples
use rusty_promql_parser::parser::selector::{vector_selector, matrix_selector};
// Simple vector selector
let (_, sel) = vector_selector("http_requests_total").unwrap();
assert_eq!(sel.name, Some("http_requests_total".to_string()));
// With label matchers
let (_, sel) = vector_selector(r#"http_requests{job="api"}"#).unwrap();
assert_eq!(sel.matchers.len(), 1);
// Matrix selector with range
let (_, sel) = matrix_selector("http_requests[5m]").unwrap();
assert_eq!(sel.range_millis(), 5 * 60 * 1000);Structs§
- Label
Matcher - A single label matcher.
- Matrix
Selector - A matrix selector expression (range vector).
- Vector
Selector - A vector selector expression (instant vector).
Enums§
- AtModifier
- The
@modifier for timestamp pinning. - Label
Match Op - Label matching operator.
Functions§
- at_
modifier - Parse the @ modifier:
@ <timestamp>,@ start(),@ end() - base_
vector_ selector - Parse a vector selector without offset modifier. This is used internally by matrix_selector which handles offset after the range.
- label_
matchers - Parse label matchers inside braces:
{label="value", ...} - matrix_
selector - Parse a matrix selector (range vector)
- offset_
modifier - Parse an offset modifier:
offset 5m,offset -1h - vector_
selector - Parse a vector selector