mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
feat(alerting): calculate avg of valid points
This commit is contained in:
parent
c17064fb44
commit
dd3060fdc3
@ -27,13 +27,17 @@ func (s *SimpleReducer) Reduce(series *tsdb.TimeSeries) null.Float {
|
|||||||
|
|
||||||
switch s.Type {
|
switch s.Type {
|
||||||
case "avg":
|
case "avg":
|
||||||
|
validPointsCount := 0
|
||||||
for _, point := range series.Points {
|
for _, point := range series.Points {
|
||||||
if point[0].Valid {
|
if point[0].Valid {
|
||||||
value += point[0].Float64
|
value += point[0].Float64
|
||||||
|
validPointsCount += 1
|
||||||
allNull = false
|
allNull = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
value = value / float64(len(series.Points))
|
if validPointsCount > 0 {
|
||||||
|
value = value / float64(validPointsCount)
|
||||||
|
}
|
||||||
case "sum":
|
case "sum":
|
||||||
for _, point := range series.Points {
|
for _, point := range series.Points {
|
||||||
if point[0].Valid {
|
if point[0].Valid {
|
||||||
@ -90,7 +94,6 @@ func (s *SimpleReducer) Reduce(series *tsdb.TimeSeries) null.Float {
|
|||||||
value = (values[(length/2)-1] + values[length/2]) / 2
|
value = (values[(length/2)-1] + values[length/2]) / 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if allNull {
|
if allNull {
|
||||||
|
@ -16,6 +16,20 @@ func TestSimpleReducer(t *testing.T) {
|
|||||||
So(result, ShouldEqual, float64(2))
|
So(result, ShouldEqual, float64(2))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Convey("avg of none null data", func() {
|
||||||
|
reducer := NewSimpleReducer("avg")
|
||||||
|
series := &tsdb.TimeSeries{
|
||||||
|
Name: "test time serie",
|
||||||
|
}
|
||||||
|
|
||||||
|
series.Points = append(series.Points, tsdb.NewTimePoint(null.FloatFrom(3), 1))
|
||||||
|
series.Points = append(series.Points, tsdb.NewTimePoint(null.FloatFromPtr(nil), 2))
|
||||||
|
series.Points = append(series.Points, tsdb.NewTimePoint(null.FloatFromPtr(nil), 3))
|
||||||
|
series.Points = append(series.Points, tsdb.NewTimePoint(null.FloatFrom(3), 4))
|
||||||
|
|
||||||
|
So(reducer.Reduce(series).Float64, ShouldEqual, float64(3))
|
||||||
|
})
|
||||||
|
|
||||||
Convey("sum", func() {
|
Convey("sum", func() {
|
||||||
result := testReducer("sum", 1, 2, 3)
|
result := testReducer("sum", 1, 2, 3)
|
||||||
So(result, ShouldEqual, float64(6))
|
So(result, ShouldEqual, float64(6))
|
||||||
|
Loading…
Reference in New Issue
Block a user