github.com/go-graphite/carbonapi@v0.17.0/expr/functions/group/function.go (about) 1 package group 2 3 import ( 4 "context" 5 6 "github.com/go-graphite/carbonapi/expr/helper" 7 "github.com/go-graphite/carbonapi/expr/interfaces" 8 "github.com/go-graphite/carbonapi/expr/types" 9 "github.com/go-graphite/carbonapi/pkg/parser" 10 ) 11 12 type group struct{} 13 14 func GetOrder() interfaces.Order { 15 return interfaces.Any 16 } 17 18 func New(configFile string) []interfaces.FunctionMetadata { 19 res := make([]interfaces.FunctionMetadata, 0) 20 f := &group{} 21 functions := []string{"group"} 22 for _, n := range functions { 23 res = append(res, interfaces.FunctionMetadata{Name: n, F: f}) 24 } 25 return res 26 } 27 28 // group(*seriesLists) 29 func (f *group) Do(ctx context.Context, eval interfaces.Evaluator, e parser.Expr, from, until int64, values map[parser.MetricRequest][]*types.MetricData) ([]*types.MetricData, error) { 30 args, err := helper.GetSeriesArgsAndRemoveNonExisting(ctx, eval, e, from, until, values) 31 if err != nil { 32 return nil, err 33 } 34 35 return args, nil 36 } 37 38 // Description is auto-generated description, based on output of https://github.com/graphite-project/graphite-web 39 func (f *group) Description() map[string]types.FunctionDescription { 40 return map[string]types.FunctionDescription{ 41 "group": { 42 Description: "Takes an arbitrary number of seriesLists and adds them to a single seriesList. This is used\nto pass multiple seriesLists to a function which only takes one", 43 Function: "group(*seriesLists)", 44 Group: "Combine", 45 Module: "graphite.render.functions", 46 Name: "group", 47 Params: []types.FunctionParam{ 48 { 49 Multiple: true, 50 Name: "seriesLists", 51 Type: types.SeriesList, 52 }, 53 }, 54 SeriesChange: true, // function aggregate metrics or change series items count 55 }, 56 } 57 }