mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-23 20:37:12 +01:00
app/vmselect/promql: adjust value returned by linearRegression to the end of time range like Prometheus does
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/71
This commit is contained in:
parent
90e72c2a42
commit
4bb738ddd9
@ -403,6 +403,8 @@ func linearRegression(rfa *rollupFuncArg) (float64, float64) {
|
|||||||
}
|
}
|
||||||
k := (n*tvSum - tSum*vSum) / (n*ttSum - tSum*tSum)
|
k := (n*tvSum - tSum*vSum) / (n*ttSum - tSum*tSum)
|
||||||
v := (vSum - k*tSum) / n
|
v := (vSum - k*tSum) / n
|
||||||
|
// Adjust v to the last timestamp on the given time range.
|
||||||
|
v += k * (float64(timestamps[len(timestamps)-1]-tFirst) * 1e-3)
|
||||||
return v, k
|
return v, k
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,10 +143,10 @@ func TestRollupPredictLinear(t *testing.T) {
|
|||||||
testRollupFunc(t, "predict_linear", args, &me, vExpected)
|
testRollupFunc(t, "predict_linear", args, &me, vExpected)
|
||||||
}
|
}
|
||||||
|
|
||||||
f(0e-3, 63.739757761102624)
|
f(0e-3, 30.382432471845043)
|
||||||
f(50e-3, 50.39682764539959)
|
f(50e-3, 17.03950235614201)
|
||||||
f(100e-3, 37.053897529696556)
|
f(100e-3, 3.696572240438975)
|
||||||
f(200e-3, 10.368037298290488)
|
f(200e-3, -22.989287990967092)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRollupHoltWinters(t *testing.T) {
|
func TestRollupHoltWinters(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user