in pkg/sls-plugin.go [911:959]
func (ds *SlsDatasource) BuildTable(logs []map[string]string, xcol string, ycols []string, keys []string, frames *data.Frames) {
frame := data.NewFrame(strings.Join(ycols, ","))
fieldMap := make(map[string][]string)
var keyArr []string
var times []time.Time
if len(ycols) == 1 && ycols[0] == "" && len(logs) > 0 {
ycols = ycols[:0]
if len(keys) > 0 {
ycols = append(ycols, keys...)
} else {
for k := range logs[0] {
if k != "__time__" && k != "__source__" {
ycols = append(ycols, k)
}
}
}
}
for _, ycol := range ycols {
fieldMap[ycol] = make([]string, 0)
keyArr = append(keyArr, ycol)
}
for _, alog := range logs {
for k, v := range alog {
if fieldMap[k] != nil {
fieldMap[k] = append(fieldMap[k], v)
}
if xcol != "" && xcol == k {
floatValue, err := strconv.ParseFloat(v, 64)
if err != nil {
log.DefaultLogger.Debug("BuildTable", "ParseTime", err)
continue
}
t := time.Unix(int64(floatValue), 0)
times = append(times, t)
}
}
}
for _, v := range keyArr {
frame.Fields = append(frame.Fields, data.NewField(v, nil, fieldMap[v]))
}
if len(times) > 0 {
frame.Fields = append(frame.Fields, data.NewField("time", nil, times))
}
*frames = append(*frames, frame)
}