Basic PromQL Querying

All Topics

Instant and Range Vectors

Instant and Range Vectors

PromQL has two fundamental data types for time series results.

Instant vector — a single value per series at one point in time. When you query a metric name (with or without label matchers), you get an instant vector:

http_requests_total{job="demo"}

Each series returns its most recent value. This is what you see in Table view in the expression browser.

Range vector — a list of values per series over a time window. Add a duration in square brackets to get a range vector:

http_requests_total{job="demo"}[5m]

This returns all the raw samples collected in the last 5 minutes for each matching series. You cannot graph a range vector directly — it must be passed to a function like rate() or increase() first.

Supported time units: s (seconds), m (minutes), h (hours), d (days), w (weeks), y (years).

You can combine them: 1h30m means 90 minutes.

Why does this matter? Functions like rate(), irate(), and increase() require a range vector as input and return an instant vector as output. Understanding this distinction is key to writing correct PromQL.