Support $__range_series variable

This commit is contained in:
Alexander Zobnin
2021-05-26 17:48:36 +03:00
parent b07a226574
commit ac220a76e8
2 changed files with 21 additions and 1 deletions

View File

@@ -8,6 +8,8 @@ import (
"github.com/alexanderzobnin/grafana-zabbix/pkg/timeseries"
)
const RANGE_VARIABLE_VALUE = "range_series"
var errFunctionNotSupported = func(name string) error {
return fmt.Errorf("function not supported: %s", name)
}
@@ -75,12 +77,18 @@ func applyFunctions(series []*timeseries.TimeSeriesData, functions []QueryFuncti
func applyGroupBy(series timeseries.TimeSeries, params ...string) (timeseries.TimeSeries, error) {
pInterval := params[0]
pAgg := params[1]
aggFunc := getAggFunc(pAgg)
if pInterval == RANGE_VARIABLE_VALUE {
s := series.GroupByRange(aggFunc)
return s, nil
}
interval, err := gtime.ParseInterval(pInterval)
if err != nil {
return nil, errParsingFunctionParam(err)
}
aggFunc := getAggFunc(pAgg)
s := series.GroupBy(interval, aggFunc)
return s, nil
}

View File

@@ -75,6 +75,18 @@ func (ts TimeSeries) GroupBy(interval time.Duration, aggFunc AggFunc) TimeSeries
return groupedSeries
}
func (ts TimeSeries) GroupByRange(aggFunc AggFunc) TimeSeries {
if ts.Len() == 0 {
return ts
}
value := aggFunc(ts)
return []TimePoint{
{Time: ts[0].Time, Value: value},
{Time: ts[ts.Len()-1].Time, Value: value},
}
}
func (ts TimeSeries) Transform(transformFunc TransformFunc) TimeSeries {
for i, p := range ts {
ts[i] = transformFunc(p)