Add scalar() function.

Change-Id: I1d1183e926a18fc98c9e94bbb9a808a3fb313102
This commit is contained in:
Julius Volz 2013-09-17 14:59:31 +02:00
parent e26d3437fd
commit be8024e18c
1 changed files with 16 additions and 0 deletions

View File

@ -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},