【发布时间】:2020-10-15 07:13:35
【问题描述】:
我正在评估 VictoriaMetrics 的 IoT 应用程序,在该应用程序中,我们有时会因硬件或通信问题而出现一系列差距。在某些时间序列报告情况下,对缺失的时间间隔进行插值对我们很有帮助。我看到MetricsQL(它扩展了 PromQL)有一个keep_last_value() 函数,它将通过保持最后观察到的值直到出现新值来填补空白(这对我们有帮助),但在某些情况下,值之间的线性插值差距之前和之后是对缺失部分的更现实的估计。 PromQL 或 MetricsQL 中是否有一个函数可以对系列中的缺失数据进行线性插值,或者是否可以构建一个更复杂的查询来实现这一点?
阐明所需的插值
我想要的是在间隙前后的点之间进行简单的插值;我相信这就是 TimescaleDB 的 interpolate() 函数的作用。换句话说,如果我的时间序列是:
(1:00, 2)
(2:00, 4)
(3:00, NaN)
(4:00, 5)
(5:00, 1)
我希望插值的 3:00 值为 4.5,即前后两点之间的中间值。我不希望它是 6(这是我通过从缺失点之前的点推断得到的,忽略之后的点)并且我不想要如果我对整体进行线性回归会得到任何值系列并在 3:00 进行插值(大概是 3,或接近它的时间)。
当然,这只是一个简单的说明,间隔也有可能持续超过一个时间步长。但在这种情况下,我仍然希望插值仅基于间隙之前和之后的点,忽略系列的其余部分。
【问题讨论】:
标签: promql metricsql victoriametrics