Skip to content

Commit f0a0e64

Browse files
committed
feat(influxdb): backend support for alias by segment
ref grafana#6510
1 parent 9727151 commit f0a0e64

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

pkg/tsdb/influxdb/response_parser.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"fmt"
66
"regexp"
7+
"strconv"
78
"strings"
89

910
"github.com/grafana/grafana/pkg/tsdb"
@@ -61,6 +62,8 @@ func (rp *ResponseParser) formatSerieName(row Row, column string, query *Query)
6162
return rp.buildSerieNameFromQuery(row, column)
6263
}
6364

65+
nameSegment := strings.Split(row.Name, ".")
66+
6467
result := legendFormat.ReplaceAllFunc([]byte(query.Alias), func(in []byte) []byte {
6568
aliasFormat := string(in)
6669
aliasFormat = strings.Replace(aliasFormat, "[[", "", 1)
@@ -74,6 +77,11 @@ func (rp *ResponseParser) formatSerieName(row Row, column string, query *Query)
7477
return []byte(column)
7578
}
7679

80+
pos, err := strconv.Atoi(aliasFormat)
81+
if err == nil && len(nameSegment) >= pos {
82+
return []byte(nameSegment[pos])
83+
}
84+
7785
if !strings.HasPrefix(aliasFormat, "tag_") {
7886
return in
7987
}

pkg/tsdb/influxdb/response_parser_test.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func TestInfluxdbResponseParser(t *testing.T) {
7272
Result{
7373
Series: []Row{
7474
{
75-
Name: "cpu",
75+
Name: "cpu.upc",
7676
Columns: []string{"time", "mean", "sum"},
7777
Tags: map[string]string{"datacenter": "America"},
7878
Values: [][]interface{}{
@@ -113,6 +113,20 @@ func TestInfluxdbResponseParser(t *testing.T) {
113113

114114
So(result.Series[0].Name, ShouldEqual, "alias America")
115115
})
116+
117+
Convey("segment alias", func() {
118+
query := &Query{Alias: "alias $1"}
119+
result := parser.Parse(response, query)
120+
121+
So(result.Series[0].Name, ShouldEqual, "alias upc")
122+
})
123+
124+
Convey("segment position out of bound", func() {
125+
query := &Query{Alias: "alias $5"}
126+
result := parser.Parse(response, query)
127+
128+
So(result.Series[0].Name, ShouldEqual, "alias $5")
129+
})
116130
})
117131

118132
Convey("[[]] alias", func() {

0 commit comments

Comments
 (0)