I'm using Victoria Metrics and I have a MetricsQL query to return an array of timeseries (timestamp and value) matching a condition.
I want to compute the averages of these values over a particular period in a single query execution for performance reasons.
For instance, I'm querying the timeseries for the past 6 hours. I need averages of the values within 1 hour buckets. So, The first average value should cover the time range from current time to 1 hour ago. The second average should cover the time range from 1 hour ago to 2 hours ago, and so on
I figured I need to use avg_over_time for this. However, that can only return a single value where as I would need 6 different value pairs in the result.
Does anyone happen to know how can I solve this?
You are wrong about
avg_over_time: it returns results for every expected time point (based on parametersstart,endandstepofapi/v1/query_rangeendpoint of API).So if you query something like
avg_over_time(my_metric [1h])withstartandendcorresponding to some six hour period, and step1h, you'll get exactly what you want.Here is demo of query to Prometheus, but Victoria should produce same results.