Return multiple frames (frame per series)

This commit is contained in:
Alexander Zobnin
2021-05-27 13:28:14 +03:00
parent 24e9129fbe
commit 9a63a1f70f
3 changed files with 36 additions and 8 deletions

View File

@@ -55,6 +55,10 @@ func convertTimeSeriesToDataFrame(series []*timeseries.TimeSeriesData) *data.Fra
timeFileld.Name = "time"
frame := data.NewFrame("History", timeFileld)
if len(series) == 0 {
return frame
}
for _, s := range series {
field := data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, 0)
field.Name = s.Meta.Name
@@ -84,6 +88,32 @@ func convertTimeSeriesToDataFrame(series []*timeseries.TimeSeriesData) *data.Fra
return wideFrame
}
func convertTimeSeriesToDataFrames(series []*timeseries.TimeSeriesData) []*data.Frame {
frames := make([]*data.Frame, 0)
for _, s := range series {
frames = append(frames, seriesToDataFrame(s))
}
return frames
}
func seriesToDataFrame(series *timeseries.TimeSeriesData) *data.Frame {
timeFileld := data.NewFieldFromFieldType(data.FieldTypeTime, 0)
timeFileld.Name = "time"
seriesName := series.Meta.Name
valueField := data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, 0)
valueField.Name = seriesName
frame := data.NewFrame(seriesName, timeFileld, valueField)
for _, point := range series.TS {
timeFileld.Append(point.Time)
valueField.Append(point.Value)
}
return frame
}
func convertHistoryToDataFrame(history zabbix.History, items []*zabbix.Item) *data.Frame {
timeFileld := data.NewFieldFromFieldType(data.FieldTypeTime, 0)
timeFileld.Name = "time"