| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package conditions
- import "github.com/grafana/grafana/pkg/tsdb"
- type QueryReducer interface {
- Reduce(timeSeries *tsdb.TimeSeries) float64
- }
- type SimpleReducer struct {
- Type string
- }
- func (s *SimpleReducer) Reduce(series *tsdb.TimeSeries) float64 {
- var value float64 = 0
- switch s.Type {
- case "avg":
- for _, point := range series.Points {
- value += point[0]
- }
- value = value / float64(len(series.Points))
- case "sum":
- for _, point := range series.Points {
- value += point[0]
- }
- case "min":
- for i, point := range series.Points {
- if i == 0 {
- value = point[0]
- }
- if value > point[0] {
- value = point[0]
- }
- }
- case "max":
- for _, point := range series.Points {
- if value < point[0] {
- value = point[0]
- }
- }
- case "mean":
- meanPosition := int64(len(series.Points) / 2)
- value = series.Points[meanPosition][0]
- }
- return value
- }
- func NewSimpleReducer(typ string) *SimpleReducer {
- return &SimpleReducer{Type: typ}
- }
|