mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
Revert "app/vmselect/promql: remove metric name after applying clamp_min
and clamp_max
functions in order to be consistent with Prometheus"
This reverts commit bb61a4769b
.
Reason for revert: the previous behavior for VictoriaMetrics is easier to understand and use by users -
functions, which don't change the meaning of the time series shouldn't drop metric name.
Now the following functions do not drop metric name:
* clamp_min
* clamp_max
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/674
This commit is contained in:
parent
f7d28bddbf
commit
a94825b169
2 changed files with 12 additions and 1 deletions
|
@ -636,6 +636,7 @@ func TestExecSuccess(t *testing.T) {
|
||||||
Values: []float64{1000, 1200, 1400, 1400, 1400, 1400},
|
Values: []float64{1000, 1200, 1400, 1400, 1400, 1400},
|
||||||
Timestamps: timestampsExpected,
|
Timestamps: timestampsExpected,
|
||||||
}
|
}
|
||||||
|
r.MetricName.MetricGroup = []byte("foobar")
|
||||||
resultExpected := []netstorage.Result{r}
|
resultExpected := []netstorage.Result{r}
|
||||||
f(q, resultExpected)
|
f(q, resultExpected)
|
||||||
})
|
})
|
||||||
|
@ -647,6 +648,7 @@ func TestExecSuccess(t *testing.T) {
|
||||||
Values: []float64{1000, 1200, 1400, 1400, 1400, 1400},
|
Values: []float64{1000, 1200, 1400, 1400, 1400, 1400},
|
||||||
Timestamps: timestampsExpected,
|
Timestamps: timestampsExpected,
|
||||||
}
|
}
|
||||||
|
r.MetricName.MetricGroup = []byte("foobar")
|
||||||
resultExpected := []netstorage.Result{r}
|
resultExpected := []netstorage.Result{r}
|
||||||
f(q, resultExpected)
|
f(q, resultExpected)
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,6 +17,11 @@ import (
|
||||||
"github.com/valyala/histogram"
|
"github.com/valyala/histogram"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var transformFuncsKeepMetricGroup = map[string]bool{
|
||||||
|
"clamp_max": true,
|
||||||
|
"clamp_min": true,
|
||||||
|
}
|
||||||
|
|
||||||
var transformFuncs = map[string]transformFunc{
|
var transformFuncs = map[string]transformFunc{
|
||||||
// Standard promql funcs
|
// Standard promql funcs
|
||||||
// See funcs accepting instant-vector on https://prometheus.io/docs/prometheus/latest/querying/functions/ .
|
// See funcs accepting instant-vector on https://prometheus.io/docs/prometheus/latest/querying/functions/ .
|
||||||
|
@ -125,8 +130,12 @@ func newTransformFuncOneArg(tf func(v float64) float64) transformFunc {
|
||||||
}
|
}
|
||||||
|
|
||||||
func doTransformValues(arg []*timeseries, tf func(values []float64), fe *metricsql.FuncExpr) ([]*timeseries, error) {
|
func doTransformValues(arg []*timeseries, tf func(values []float64), fe *metricsql.FuncExpr) ([]*timeseries, error) {
|
||||||
|
name := strings.ToLower(fe.Name)
|
||||||
|
keepMetricGroup := transformFuncsKeepMetricGroup[name]
|
||||||
for _, ts := range arg {
|
for _, ts := range arg {
|
||||||
|
if !keepMetricGroup {
|
||||||
ts.MetricName.ResetMetricGroup()
|
ts.MetricName.ResetMetricGroup()
|
||||||
|
}
|
||||||
tf(ts.Values)
|
tf(ts.Values)
|
||||||
}
|
}
|
||||||
return arg, nil
|
return arg, nil
|
||||||
|
|
Loading…
Reference in a new issue