mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
InfluxDB: Flux: handle boolean data-columns (#34479)
* InfluxDB: Flux: handle boolean data-columns * normalize data-type strings based on documentation * reference missing data type
This commit is contained in:
parent
adbe383456
commit
ab26c4dfa4
@ -9,18 +9,18 @@ import (
|
||||
"github.com/influxdata/influxdb-client-go/v2/api/query"
|
||||
)
|
||||
|
||||
// Copied from: (Apache 2 license)
|
||||
// https://github.com/influxdata/influxdb-client-go/blob/master/query.go#L30
|
||||
// based on https://docs.influxdata.com/influxdb/v2.0/reference/syntax/annotated-csv/#data-types
|
||||
const (
|
||||
stringDatatype = "string"
|
||||
doubleDatatype = "double"
|
||||
boolDatatype = "bool"
|
||||
longDatatype = "long"
|
||||
uLongDatatype = "unsignedLong"
|
||||
durationDatatype = "duration"
|
||||
base64BinaryDataType = "base64Binary"
|
||||
timeDatatypeRFC = "dateTime:RFC3339"
|
||||
timeDatatypeRFCNano = "dateTime:RFC3339Nano"
|
||||
stringDatatype = "string"
|
||||
doubleDatatype = "double"
|
||||
booleanDatatype = "boolean"
|
||||
longDatatype = "long"
|
||||
unsignedLongDatatype = "unsignedLong"
|
||||
durationDatatype = "duration"
|
||||
base64BinaryDataType = "base64Binary"
|
||||
datetimeRFC339DataType = "dateTime:RFC3339"
|
||||
datetimeRFC339DataTypeNano = "dateTime:RFC3339Nano"
|
||||
// based on the documentation there should also be "dateTime:number" but i have never seen it yet.
|
||||
)
|
||||
|
||||
type columnInfo struct {
|
||||
@ -92,19 +92,19 @@ func getConverter(t string) (*data.FieldConverter, error) {
|
||||
switch t {
|
||||
case stringDatatype:
|
||||
return &converters.AnyToNullableString, nil
|
||||
case timeDatatypeRFC:
|
||||
case datetimeRFC339DataType:
|
||||
return &timeToOptionalTime, nil
|
||||
case timeDatatypeRFCNano:
|
||||
case datetimeRFC339DataTypeNano:
|
||||
return &timeToOptionalTime, nil
|
||||
case durationDatatype:
|
||||
return &converters.Int64ToNullableInt64, nil
|
||||
case doubleDatatype:
|
||||
return &converters.Float64ToNullableFloat64, nil
|
||||
case boolDatatype:
|
||||
case booleanDatatype:
|
||||
return &converters.BoolToNullableBool, nil
|
||||
case longDatatype:
|
||||
return &converters.Int64ToNullableInt64, nil
|
||||
case uLongDatatype:
|
||||
case unsignedLongDatatype:
|
||||
return &converters.Uint64ToNullableUInt64, nil
|
||||
case base64BinaryDataType:
|
||||
return &converters.AnyToNullableString, nil
|
||||
@ -125,7 +125,7 @@ func getGroupColumnNames(cols []*query.FluxColumn) []string {
|
||||
}
|
||||
|
||||
func isTimestampType(dataType string) bool {
|
||||
return (dataType == timeDatatypeRFC) || (dataType == timeDatatypeRFCNano)
|
||||
return (dataType == datetimeRFC339DataType) || (dataType == datetimeRFC339DataTypeNano)
|
||||
}
|
||||
|
||||
func hasUsualStartStop(dataCols []*query.FluxColumn) bool {
|
||||
|
@ -204,8 +204,12 @@ func TestBuckets(t *testing.T) {
|
||||
verifyGoldenResponse(t, "buckets")
|
||||
}
|
||||
|
||||
func TestBooleanGrouping(t *testing.T) {
|
||||
verifyGoldenResponse(t, "boolean")
|
||||
func TestBooleanTagGrouping(t *testing.T) {
|
||||
verifyGoldenResponse(t, "boolean_tag")
|
||||
}
|
||||
|
||||
func TestBooleanData(t *testing.T) {
|
||||
verifyGoldenResponse(t, "boolean_data")
|
||||
}
|
||||
|
||||
func TestGoldenFiles(t *testing.T) {
|
||||
|
9
pkg/tsdb/influxdb/flux/testdata/boolean_data.csv
vendored
Normal file
9
pkg/tsdb/influxdb/flux/testdata/boolean_data.csv
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
#group,false,false,true,true,false,false,true,true,true
|
||||
#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,boolean,string,string,string
|
||||
#default,_result,,,,,,,,
|
||||
,result,table,_start,_stop,_time,_value,_field,_measurement,direction
|
||||
,,0,2021-05-20T08:36:26.7Z,2021-05-20T09:36:26.7Z,2021-05-20T09:35:39.6Z,true,exitcode,x,left
|
||||
,,0,2021-05-20T08:36:26.7Z,2021-05-20T09:36:26.7Z,2021-05-20T09:35:43.0Z,false,exitcode,x,left
|
||||
,,1,2021-05-20T08:36:26.7Z,2021-05-20T09:36:26.7Z,2021-05-20T09:35:47.3Z,false,exitcode,x,right
|
||||
,,1,2021-05-20T08:36:26.7Z,2021-05-20T09:36:26.7Z,2021-05-20T09:35:49.6Z,true,exitcode,x,right
|
||||
|
|
32
pkg/tsdb/influxdb/flux/testdata/boolean_data.golden.txt
vendored
Normal file
32
pkg/tsdb/influxdb/flux/testdata/boolean_data.golden.txt
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
🌟 This was machine generated. Do not edit. 🌟
|
||||
|
||||
Frame[0] {}
|
||||
Name: x
|
||||
Dimensions: 2 Fields by 2 Rows
|
||||
+---------------------------------+------------------------+
|
||||
| Name: _time | Name: exitcode |
|
||||
| Labels: | Labels: direction=left |
|
||||
| Type: []*time.Time | Type: []*bool |
|
||||
+---------------------------------+------------------------+
|
||||
| 2021-05-20 09:35:39.6 +0000 UTC | true |
|
||||
| 2021-05-20 09:35:43 +0000 UTC | false |
|
||||
+---------------------------------+------------------------+
|
||||
|
||||
|
||||
|
||||
Frame[1]
|
||||
Name: x
|
||||
Dimensions: 2 Fields by 2 Rows
|
||||
+---------------------------------+-------------------------+
|
||||
| Name: _time | Name: exitcode |
|
||||
| Labels: | Labels: direction=right |
|
||||
| Type: []*time.Time | Type: []*bool |
|
||||
+---------------------------------+-------------------------+
|
||||
| 2021-05-20 09:35:47.3 +0000 UTC | false |
|
||||
| 2021-05-20 09:35:49.6 +0000 UTC | true |
|
||||
+---------------------------------+-------------------------+
|
||||
|
||||
|
||||
====== TEST DATA RESPONSE (arrow base64) ======
|
||||
FRAME=QVJST1cxAAD/////yAEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAHQAAAADAAAATAAAACgAAAAEAAAAyP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADo/v//CAAAAAwAAAABAAAAeAAAAAQAAABuYW1lAAAAAAj///8IAAAADAAAAAIAAAB7fQAABAAAAG1ldGEAAAAAAgAAALQAAAAEAAAAZv///xQAAAB4AAAAfAAAAAAABgF4AAAAAgAAADAAAAAEAAAAWP///wgAAAAUAAAACAAAAGV4aXRjb2RlAAAAAAQAAABuYW1lAAAAAID///8IAAAAIAAAABQAAAB7ImRpcmVjdGlvbiI6ImxlZnQifQAAAAAGAAAAbGFiZWxzAAAAAAAABAAEAAQAAAAIAAAAZXhpdGNvZGUAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAoBTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAFAAAAX3RpbWUAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAUAAABfdGltZQAAAP////+4AAAAFAAAAAAAAAAMABYAFAATAAwABAAMAAAAGAAAAAAAAAAUAAAAAAAAAwMACgAYAAwACAAEAAoAAAAUAAAAWAAAAAIAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAgAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAC09z6yvIAWAJafCbO8gBYBAAAAAAAAABAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA8AAAAAAADAAEAAADYAQAAAAAAAMAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoADAAAAAgABAAKAAAACAAAAHQAAAADAAAATAAAACgAAAAEAAAAyP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADo/v//CAAAAAwAAAABAAAAeAAAAAQAAABuYW1lAAAAAAj///8IAAAADAAAAAIAAAB7fQAABAAAAG1ldGEAAAAAAgAAALQAAAAEAAAAZv///xQAAAB4AAAAfAAAAAAABgF4AAAAAgAAADAAAAAEAAAAWP///wgAAAAUAAAACAAAAGV4aXRjb2RlAAAAAAQAAABuYW1lAAAAAID///8IAAAAIAAAABQAAAB7ImRpcmVjdGlvbiI6ImxlZnQifQAAAAAGAAAAbGFiZWxzAAAAAAAABAAEAAQAAAAIAAAAZXhpdGNvZGUAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAoBTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAFAAAAX3RpbWUAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAUAAABfdGltZQAAAPgBAABBUlJPVzE=
|
||||
FRAME=QVJST1cxAAD/////qAEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFAAAAACAAAAKAAAAAQAAADo/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAAj///8IAAAADAAAAAEAAAB4AAAABAAAAG5hbWUAAAAAAgAAALQAAAAEAAAAZv///xQAAAB4AAAAfAAAAAAABgF4AAAAAgAAADAAAAAEAAAAWP///wgAAAAUAAAACAAAAGV4aXRjb2RlAAAAAAQAAABuYW1lAAAAAID///8IAAAAIAAAABUAAAB7ImRpcmVjdGlvbiI6InJpZ2h0In0AAAAGAAAAbGFiZWxzAAAAAAAABAAEAAQAAAAIAAAAZXhpdGNvZGUAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAoBTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAFAAAAX3RpbWUAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAUAAABfdGltZQAAAAAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAABgAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAAFgAAAACAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAYewJtLyAFgCYA5O0vIAWAgAAAAAAAAAQAAAADAAUABIADAAIAAQADAAAABAAAAAsAAAAOAAAAAAAAwABAAAAuAEAAAAAAADAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAoADAAAAAgABAAKAAAACAAAAFAAAAACAAAAKAAAAAQAAADo/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAAj///8IAAAADAAAAAEAAAB4AAAABAAAAG5hbWUAAAAAAgAAALQAAAAEAAAAZv///xQAAAB4AAAAfAAAAAAABgF4AAAAAgAAADAAAAAEAAAAWP///wgAAAAUAAAACAAAAGV4aXRjb2RlAAAAAAQAAABuYW1lAAAAAID///8IAAAAIAAAABUAAAB7ImRpcmVjdGlvbiI6InJpZ2h0In0AAAAGAAAAbGFiZWxzAAAAAAAABAAEAAQAAAAIAAAAZXhpdGNvZGUAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAoBTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAFAAAAX3RpbWUAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAUAAABfdGltZQAAANABAABBUlJPVzE=
|
Loading…
Reference in New Issue
Block a user