Victoria Metrics中如何用MetricsQL生成多小时桶的数值平均值?
Victoria Metrics 按时间桶批量计算平均值的解决方案
你可以通过**avg_over_time结合offset参数+标签标识**的方式,在单次查询中生成多个时间桶的平均值结果,具体写法如下:
假设你的原始时序查询语句是your_metric_query,要计算过去6小时内每1小时的平均值,可以这样写:
label_replace(avg_over_time(your_metric_query[1h]), "time_bucket", "0~-1h", "", "") or label_replace(avg_over_time(your_metric_query[1h] offset 1h), "time_bucket", "-1h~-2h", "", "") or label_replace(avg_over_time(your_metric_query[1h] offset 2h), "time_bucket", "-2h~-3h", "", "") or label_replace(avg_over_time(your_metric_query[1h] offset 3h), "time_bucket", "-3h~-4h", "", "") or label_replace(avg_over_time(your_metric_query[1h] offset 4h), "time_bucket", "-4h~-5h", "", "") or label_replace(avg_over_time(your_metric_query[1h] offset 5h), "time_bucket", "-5h~-6h", "", "")
逻辑说明:
offset N:用来偏移查询的时间窗口,依次覆盖过去第1到第6个1小时区间;avg_over_time([1h]):对每个偏移后的1小时窗口计算平均值;label_replace:给每个窗口的结果添加time_bucket标签,用来区分不同的时间桶区间,方便后续识别结果对应的时间段。
这种方式会返回6组带标签的时序结果,每组对应一个时间桶的平均值,完全满足你单次查询获取多段结果的需求。
内容的提问来源于stack exchange,提问作者underachiever
相关产品推荐
相关产品推荐

