【发布时间】:2020-10-22 02:31:24
【问题描述】:
随着时间的推移,函数不支持 by/without 语法。使用 avg_over_time(metric[1h]) 和 avg(metric[1h]) 之间的数学区别是什么? 是否可以用具有相同结果的函数(在本例中为 avg)替换随时间变化的函数?谢谢!
【问题讨论】:
标签: promql
随着时间的推移,函数不支持 by/without 语法。使用 avg_over_time(metric[1h]) 和 avg(metric[1h]) 之间的数学区别是什么? 是否可以用具有相同结果的函数(在本例中为 avg)替换随时间变化的函数?谢谢!
【问题讨论】:
标签: promql
avg_over_time(m[d]) 函数执行以下操作:
m的所有时间序列
d 上原始样本的平均值。avg(m) 函数执行以下操作:
m的所有时间序列
如您所见,avg_over_time() 和 avg() 是完全不同的函数 - avg_over_time() 计算每个选定时间序列的不同平均值,而 avg() 计算选定时间序列的平均值。
【讨论】:
[d]时间范围内多个时间序列的数据点的平均值,则可以使用以下查询:sum(sum_over_time(m[d])) by (...) / sum(count_over_time(m[d])) by (...)
为什么不能直接使用
avg(avg_over_time(m[d]))
而不是
sum(sum_over_time(m[d])) by (...) / sum(count_over_time(m[d])) by (...)
【讨论】:
avg(avg_over_time(m[d])) 返回平均值的平均值,不等于平均值。见math.stackexchange.com/questions/95909/…