PromQL avg vs avg_over_time

Со временем функции не поддерживаются синтаксисом или без него. В чем состоит математическая разница между использованием avg_over_time (метрика [1h]) и avg (метрика [1h])? Можно ли заменить функцию с течением времени функцией (в данном случае avg) с такими же результатами? Спасибо!


person RJtokenring    schedule 22.10.2020    source источник


Ответы (2)


Функция avg_over_time(m[d]) выполняет следующее:

  • он выбирает все временные ряды с именем m
  • затем для каждого выбранного временного ряда вычисляется среднее значение по необработанным выборкам во временном диапазоне d, предшествующем каждой точке на графике.

Функция avg(m) выполняет следующее:

  • он выбирает все временные ряды с именем m
  • затем для каждого выбранного временного ряда он выбирает последнее необработанное значение выборки перед каждой точкой на графике. Дополнительные сведения см. В этих документах.
  • затем для каждой точки на графике вычисляется среднее значение по выбранным значениям для каждого временного ряда.

Как видите, avg_over_time() и avg() - это совершенно разные функции: avg_over_time() вычисляет отдельные средние значения для каждого выбранного временного ряда, а avg() вычисляет средние значения для выбранного временного ряда.

person valyala    schedule 08.11.2020
comment
Спасибо. Его можно комбинировать как подзапросы для получения правильного вывода. Есть ли недостаток? - person RJtokenring; 08.11.2020
comment
Если вам нужно рассчитать среднее значение по точкам данных из нескольких временных рядов в заданном [d] временном диапазоне, то можно использовать следующий запрос: sum(sum_over_time(m[d])) by (...) / sum(count_over_time(m[d])) by (...) - person valyala; 08.11.2020

Почему ты не можешь просто использовать

avg(avg_over_time(m[d]))

вместо того

sum(sum_over_time(m[d])) by (...) / sum(count_over_time(m[d])) by (...)
person eng007    schedule 22.02.2021
comment
потому что avg(avg_over_time(m[d])) возвращает среднее из средних значений, которое не равно среднему. См. math.stackexchange.com/questions/95909/ - person valyala; 23.02.2021