-
-
Save xNok/920f9b13cc38d9a2f13ad0e2371cc66b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func read_events_as_query_table_result(client influxdb2.Client) map[time.Time]ThermostatSetting { | |
// Get query client | |
queryAPI := client.QueryAPI(org) | |
// Query. You need to change a bit the Query from the Query Builder | |
// Otherwise it won't work | |
fluxQuery := fmt.Sprintf(`from(bucket: "users_business_events") | |
|> range(start: -1h) | |
|> filter(fn: (r) => r["_measurement"] == "thermostat") | |
|> yield(name: "mean")`) | |
result, err := queryAPI.Query(context.Background(), fluxQuery) | |
// Putting back the data in share requires a bit of work | |
var resultPoints map[time.Time]ThermostatSetting | |
resultPoints = make(map[time.Time]ThermostatSetting) | |
if err == nil { | |
// Iterate over query response | |
for result.Next() { | |
// Notice when group key has changed | |
if result.TableChanged() { | |
fmt.Printf("table: %s\n", result.TableMetadata().String()) | |
} | |
val, ok := resultPoints[result.Record().Time()] | |
if !ok { | |
val = ThermostatSetting{ | |
user: fmt.Sprintf("%v", result.Record().ValueByKey("user")), | |
} | |
} | |
switch field := result.Record().Field(); field { | |
case "avg": | |
val.avg = result.Record().Value().(float64) | |
case "max": | |
val.max = result.Record().Value().(float64) | |
default: | |
fmt.Printf("unrecognized field %s.\n", field) | |
} | |
resultPoints[result.Record().Time()] = val | |
} | |
// check for an error | |
if result.Err() != nil { | |
fmt.Printf("query parsing error: %s\n", result.Err().Error()) | |
} | |
} else { | |
panic(err) | |
} | |
return resultPoints | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment