Browse Source

Add scalar() function.

Change-Id: I1d1183e926a18fc98c9e94bbb9a808a3fb313102
changes/42/42/2
Julius Volz 11 years ago
parent
commit
be8024e18c
  1. 16
      rules/ast/functions.go

16
rules/ast/functions.go

@ -16,6 +16,7 @@ package ast
import (
"errors"
"fmt"
"math"
"sort"
"time"
@ -255,6 +256,15 @@ func sampleVectorImpl(timestamp time.Time, view *viewAdapter, args []Node) inter
}
}
// === scalar(node *VectorNode) Scalar ===
func scalarImpl(timestamp time.Time, view *viewAdapter, args []Node) interface{} {
v := args[0].(VectorNode).Eval(timestamp, view)
if len(v) != 1 {
return clientmodel.SampleValue(math.NaN())
}
return clientmodel.SampleValue(v[0].Value)
}
var functions = map[string]*Function{
"delta": {
name: "delta",
@ -274,6 +284,12 @@ var functions = map[string]*Function{
returnType: VECTOR,
callFn: sampleVectorImpl,
},
"scalar": {
name: "scalar",
argTypes: []ExprType{VECTOR},
returnType: SCALAR,
callFn: scalarImpl,
},
"sort": {
name: "sort",
argTypes: []ExprType{VECTOR},

Loading…
Cancel
Save