Our team is considering migrating to InfluxDB 3.0, which would likely entail redoing all of our flux-based queries (in Grafana dashboards, as well as miscellaneous tools/scripts) in InfluxQL.Many (most?) of our queries rely on the aggregateWindow function in flux – in particular, we often need to use that to limit the size of the results when plotting data in Grafana – is that a feature supported in InfluxQL? How does one build a query that can cover a long time range while avoiding exceeding size constraints in plotting tools?
@Phil_Lundeen InfluxQL does include this functionality. In fact, the Flux
aggregateWindow() operation was designed to replicate the functionality of InfluxQL. In InfluxQL, you group data by time and specify a duration for each time window. For example, the following Flux query:
from(bucket: "example-bucket") |> range(start: -1d) |> filter(fn: (r) => r._measurement == "home" ) |> filter(fn: (r) => r._field == "temp" or r._field == "hum") |> aggregateWindow(fn: mean, every: 1h)
Would look like this in InfluxQL:
SELECT MEAN(temp), MEAN(hum) FROM "example-bucket"..home WHERE time > now() - 1d GROUP BY time(1h)