mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Elasticsearch: Fix where name of frame is set (#64233)
* Elasticsearch: Use displayName field for naming * Change solution to frame.Name to be backward compatible * Fix snapshot tests * Use Time and Value for time and value fields * Use variables from grafana-plugin-sdk-go for name
This commit is contained in:
parent
1cb39b3523
commit
aa123e0d50
@ -82,7 +82,7 @@ func parseResponse(responses []*es.SearchResponse, targets []*Query, configuredF
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return &backend.QueryDataResponse{}, err
|
return &backend.QueryDataResponse{}, err
|
||||||
}
|
}
|
||||||
nameFields(queryRes, target)
|
nameFrames(queryRes, target)
|
||||||
trimDatapoints(queryRes, target)
|
trimDatapoints(queryRes, target)
|
||||||
|
|
||||||
result.Responses[target.RefID] = queryRes
|
result.Responses[target.RefID] = queryRes
|
||||||
@ -381,8 +381,8 @@ func processBuckets(aggs map[string]interface{}, target *Query,
|
|||||||
|
|
||||||
func newTimeSeriesFrame(timeData []time.Time, tags map[string]string, values []*float64) *data.Frame {
|
func newTimeSeriesFrame(timeData []time.Time, tags map[string]string, values []*float64) *data.Frame {
|
||||||
frame := data.NewFrame("",
|
frame := data.NewFrame("",
|
||||||
data.NewField("time", nil, timeData),
|
data.NewField(data.TimeSeriesTimeFieldName, nil, timeData),
|
||||||
data.NewField("value", tags, values))
|
data.NewField(data.TimeSeriesValueFieldName, tags, values))
|
||||||
frame.Meta = &data.FrameMeta{
|
frame.Meta = &data.FrameMeta{
|
||||||
Type: data.FrameTypeTimeSeriesMulti,
|
Type: data.FrameTypeTimeSeriesMulti,
|
||||||
}
|
}
|
||||||
@ -777,7 +777,7 @@ func getSortedLabelValues(labels data.Labels) []string {
|
|||||||
return values
|
return values
|
||||||
}
|
}
|
||||||
|
|
||||||
func nameFields(queryResult backend.DataResponse, target *Query) {
|
func nameFrames(queryResult backend.DataResponse, target *Query) {
|
||||||
set := make(map[string]struct{})
|
set := make(map[string]struct{})
|
||||||
frames := queryResult.Frames
|
frames := queryResult.Frames
|
||||||
for _, v := range frames {
|
for _, v := range frames {
|
||||||
@ -796,9 +796,7 @@ func nameFields(queryResult backend.DataResponse, target *Query) {
|
|||||||
// another is "number"
|
// another is "number"
|
||||||
valueField := frame.Fields[1]
|
valueField := frame.Fields[1]
|
||||||
fieldName := getFieldName(*valueField, target, metricTypeCount)
|
fieldName := getFieldName(*valueField, target, metricTypeCount)
|
||||||
if fieldName != "" {
|
frame.Name = fieldName
|
||||||
valueField.SetConfig(&data.FieldConfig{DisplayNameFromDS: fieldName})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,18 +61,7 @@ func requireFloatAt(t *testing.T, expected float64, field *data.Field, index int
|
|||||||
}
|
}
|
||||||
|
|
||||||
func requireTimeSeriesName(t *testing.T, expected string, frame *data.Frame) {
|
func requireTimeSeriesName(t *testing.T, expected string, frame *data.Frame) {
|
||||||
getField := func() *data.Field {
|
require.Equal(t, expected, frame.Name)
|
||||||
for _, field := range frame.Fields {
|
|
||||||
if field.Type() != data.FieldTypeTime {
|
|
||||||
return field
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
field := getField()
|
|
||||||
require.NotNil(t, expected, field.Config)
|
|
||||||
require.Equal(t, expected, field.Config.DisplayNameFromDS)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRefIdMatching(t *testing.T) {
|
func TestRefIdMatching(t *testing.T) {
|
||||||
|
@ -59,11 +59,11 @@ func TestResponseParser(t *testing.T) {
|
|||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
|
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Count")
|
assert.Equal(t, frame.Name, "Count")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Simple query count & avg aggregation", func(t *testing.T) {
|
t.Run("Simple query count & avg aggregation", func(t *testing.T) {
|
||||||
@ -108,20 +108,20 @@ func TestResponseParser(t *testing.T) {
|
|||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
|
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Count")
|
assert.Equal(t, frame.Name, "Count")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
|
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Average value")
|
assert.Equal(t, frame.Name, "Average value")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Single group by query one metric", func(t *testing.T) {
|
t.Run("Single group by query one metric", func(t *testing.T) {
|
||||||
@ -171,19 +171,19 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server1")
|
assert.Equal(t, frame.Name, "server1")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server2")
|
assert.Equal(t, frame.Name, "server2")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Single group by query two metrics", func(t *testing.T) {
|
t.Run("Single group by query two metrics", func(t *testing.T) {
|
||||||
@ -240,35 +240,35 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server1 Count")
|
assert.Equal(t, frame.Name, "server1 Count")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server1 Average @value")
|
assert.Equal(t, frame.Name, "server1 Average @value")
|
||||||
|
|
||||||
frame = dataframes[2]
|
frame = dataframes[2]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server2 Count")
|
assert.Equal(t, frame.Name, "server2 Count")
|
||||||
|
|
||||||
frame = dataframes[3]
|
frame = dataframes[3]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server2 Average @value")
|
assert.Equal(t, frame.Name, "server2 Average @value")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("With percentiles", func(t *testing.T) {
|
t.Run("With percentiles", func(t *testing.T) {
|
||||||
@ -312,19 +312,19 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "p75")
|
assert.Equal(t, frame.Name, "p75")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "p90")
|
assert.Equal(t, frame.Name, "p90")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("With extended stats", func(t *testing.T) {
|
t.Run("With extended stats", func(t *testing.T) {
|
||||||
@ -393,51 +393,51 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server1 Max")
|
assert.Equal(t, frame.Name, "server1 Max")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server1 Std Dev Lower")
|
assert.Equal(t, frame.Name, "server1 Std Dev Lower")
|
||||||
|
|
||||||
frame = dataframes[2]
|
frame = dataframes[2]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server1 Std Dev Upper")
|
assert.Equal(t, frame.Name, "server1 Std Dev Upper")
|
||||||
|
|
||||||
frame = dataframes[3]
|
frame = dataframes[3]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server2 Max")
|
assert.Equal(t, frame.Name, "server2 Max")
|
||||||
|
|
||||||
frame = dataframes[4]
|
frame = dataframes[4]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server2 Std Dev Lower")
|
assert.Equal(t, frame.Name, "server2 Std Dev Lower")
|
||||||
|
|
||||||
frame = dataframes[5]
|
frame = dataframes[5]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server2 Std Dev Upper")
|
assert.Equal(t, frame.Name, "server2 Std Dev Upper")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Single group by with alias pattern", func(t *testing.T) {
|
t.Run("Single group by with alias pattern", func(t *testing.T) {
|
||||||
@ -496,27 +496,27 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server1 Count and {{not_exist}} server1")
|
assert.Equal(t, frame.Name, "server1 Count and {{not_exist}} server1")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "server2 Count and {{not_exist}} server2")
|
assert.Equal(t, frame.Name, "server2 Count and {{not_exist}} server2")
|
||||||
|
|
||||||
frame = dataframes[2]
|
frame = dataframes[2]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "0 Count and {{not_exist}} 0")
|
assert.Equal(t, frame.Name, "0 Count and {{not_exist}} 0")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Histogram response", func(t *testing.T) {
|
t.Run("Histogram response", func(t *testing.T) {
|
||||||
@ -598,19 +598,19 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "@metric:cpu")
|
assert.Equal(t, frame.Name, "@metric:cpu")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "@metric:logins.count")
|
assert.Equal(t, frame.Name, "@metric:logins.count")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("With drop first and last aggregation (numeric)", func(t *testing.T) {
|
t.Run("With drop first and last aggregation (numeric)", func(t *testing.T) {
|
||||||
@ -666,19 +666,19 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Average")
|
assert.Equal(t, frame.Name, "Average")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Count")
|
assert.Equal(t, frame.Name, "Count")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("With drop first and last aggregation (string)", func(t *testing.T) {
|
t.Run("With drop first and last aggregation (string)", func(t *testing.T) {
|
||||||
@ -734,19 +734,19 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Average")
|
assert.Equal(t, frame.Name, "Average")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 1)
|
require.Equal(t, frame.Fields[0].Len(), 1)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 1)
|
require.Equal(t, frame.Fields[1].Len(), 1)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Count")
|
assert.Equal(t, frame.Name, "Count")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Larger trimEdges value", func(t *testing.T) {
|
t.Run("Larger trimEdges value", func(t *testing.T) {
|
||||||
@ -945,27 +945,27 @@ func TestResponseParser(t *testing.T) {
|
|||||||
|
|
||||||
frame := dataframes[0]
|
frame := dataframes[0]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Sum @value")
|
assert.Equal(t, frame.Name, "Sum @value")
|
||||||
|
|
||||||
frame = dataframes[1]
|
frame = dataframes[1]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Max @value")
|
assert.Equal(t, frame.Name, "Max @value")
|
||||||
|
|
||||||
frame = dataframes[2]
|
frame = dataframes[2]
|
||||||
require.Len(t, frame.Fields, 2)
|
require.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Name, "time")
|
require.Equal(t, frame.Fields[0].Name, data.TimeSeriesTimeFieldName)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Name, "value")
|
require.Equal(t, frame.Fields[1].Name, data.TimeSeriesValueFieldName)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Sum @value * Max @value")
|
assert.Equal(t, frame.Name, "Sum @value * Max @value")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Terms with two bucket_script", func(t *testing.T) {
|
t.Run("Terms with two bucket_script", func(t *testing.T) {
|
||||||
@ -1472,7 +1472,7 @@ func TestResponseParser(t *testing.T) {
|
|||||||
assert.Len(t, frame.Fields, 2)
|
assert.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Top Metrics @value")
|
assert.Equal(t, frame.Name, "Top Metrics @value")
|
||||||
v, _ := frame.FloatAt(0, 0)
|
v, _ := frame.FloatAt(0, 0)
|
||||||
assert.Equal(t, 1609459200000., v)
|
assert.Equal(t, 1609459200000., v)
|
||||||
v, _ = frame.FloatAt(1, 0)
|
v, _ = frame.FloatAt(1, 0)
|
||||||
@ -1489,7 +1489,7 @@ func TestResponseParser(t *testing.T) {
|
|||||||
assert.Len(t, frame.Fields, 2)
|
assert.Len(t, frame.Fields, 2)
|
||||||
require.Equal(t, frame.Fields[0].Len(), 2)
|
require.Equal(t, frame.Fields[0].Len(), 2)
|
||||||
require.Equal(t, frame.Fields[1].Len(), 2)
|
require.Equal(t, frame.Fields[1].Len(), 2)
|
||||||
assert.Equal(t, frame.Fields[1].Config.DisplayNameFromDS, "Top Metrics @anotherValue")
|
assert.Equal(t, frame.Name, "Top Metrics @anotherValue")
|
||||||
v, _ = frame.FloatAt(0, 0)
|
v, _ = frame.FloatAt(0, 0)
|
||||||
assert.Equal(t, 1609459200000., v)
|
assert.Equal(t, 1609459200000., v)
|
||||||
v, _ = frame.FloatAt(1, 0)
|
v, _ = frame.FloatAt(1, 0)
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: Count
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+------------------+
|
// +-------------------------------+------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: |
|
// | Labels: | Labels: |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+------------------+
|
// +-------------------------------+------------------+
|
||||||
@ -26,6 +26,7 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "Count",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -35,23 +36,20 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
"nullable": true
|
"nullable": true
|
||||||
},
|
},
|
||||||
"labels": {},
|
"labels": {}
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "Count"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val3 Max float
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val3 |
|
// | Labels: | Labels: label=val3 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -28,10 +28,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val3 Min float
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val3 |
|
// | Labels: | Labels: label=val3 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -49,10 +49,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val2 Max float
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val2 |
|
// | Labels: | Labels: label=val2 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -70,10 +70,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val2 Min float
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val2 |
|
// | Labels: | Labels: label=val2 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -91,10 +91,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val1 Max float
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val1 |
|
// | Labels: | Labels: label=val1 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -112,10 +112,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val1 Min float
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val1 |
|
// | Labels: | Labels: label=val1 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -131,6 +131,7 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val3 Max float",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -140,14 +141,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -155,9 +156,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val3"
|
"label": "val3"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val3 Max float"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -179,6 +177,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val3 Min float",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -188,14 +187,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -203,9 +202,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val3"
|
"label": "val3"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val3 Min float"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -227,6 +223,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val2 Max float",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -236,14 +233,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -251,9 +248,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val2"
|
"label": "val2"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val2 Max float"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -275,6 +269,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val2 Min float",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -284,14 +279,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -299,9 +294,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val2"
|
"label": "val2"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val2 Min float"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -323,6 +315,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val1 Max float",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -332,14 +325,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -347,9 +340,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val1"
|
"label": "val1"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val1 Max float"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -371,6 +361,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val1 Min float",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -380,14 +371,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -395,9 +386,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val1"
|
"label": "val1"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val1 Min float"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: Max float
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+-------------------+
|
// +-------------------------------+-------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: |
|
// | Labels: | Labels: |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+-------------------+
|
// +-------------------------------+-------------------+
|
||||||
@ -26,6 +26,7 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "Max float",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -35,23 +36,20 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
"nullable": true
|
"nullable": true
|
||||||
},
|
},
|
||||||
"labels": {},
|
"labels": {}
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "Max float"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: Min float
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+---------------------+
|
// +-------------------------------+---------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: |
|
// | Labels: | Labels: |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+---------------------+
|
// +-------------------------------+---------------------+
|
||||||
@ -26,6 +26,7 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "Min float",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -35,23 +36,20 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
"nullable": true
|
"nullable": true
|
||||||
},
|
},
|
||||||
"labels": {},
|
"labels": {}
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "Min float"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val3
|
||||||
// Dimensions: 2 Fields by 4 Rows
|
// Dimensions: 2 Fields by 4 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val3 |
|
// | Labels: | Labels: label=val3 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -29,10 +29,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val2
|
||||||
// Dimensions: 2 Fields by 4 Rows
|
// Dimensions: 2 Fields by 4 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val2 |
|
// | Labels: | Labels: label=val2 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -51,10 +51,10 @@
|
|||||||
// 0
|
// 0
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
// Name:
|
// Name: val1
|
||||||
// Dimensions: 2 Fields by 4 Rows
|
// Dimensions: 2 Fields by 4 Rows
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
// | Name: time | Name: value |
|
// | Name: Time | Name: Value |
|
||||||
// | Labels: | Labels: label=val1 |
|
// | Labels: | Labels: label=val1 |
|
||||||
// | Type: []time.Time | Type: []*float64 |
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
// +-------------------------------+--------------------+
|
// +-------------------------------+--------------------+
|
||||||
@ -71,6 +71,7 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val3",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -80,14 +81,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -95,9 +96,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val3"
|
"label": "val3"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -121,6 +119,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val2",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -130,14 +129,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -145,9 +144,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val2"
|
"label": "val2"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val2"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -171,6 +167,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"name": "val1",
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "timeseries-multi",
|
"type": "timeseries-multi",
|
||||||
"typeVersion": [
|
"typeVersion": [
|
||||||
@ -180,14 +177,14 @@
|
|||||||
},
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "time",
|
"name": "Time",
|
||||||
"type": "time",
|
"type": "time",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "time.Time"
|
"frame": "time.Time"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "Value",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"typeInfo": {
|
"typeInfo": {
|
||||||
"frame": "float64",
|
"frame": "float64",
|
||||||
@ -195,9 +192,6 @@
|
|||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "val1"
|
"label": "val1"
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"displayNameFromDS": "val1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user