Search code examples
influxdb

influxDB - Get daily Max. value


I have data with hydrological measurements.

I want to get the daily max Water flow:

from(bucket: "API")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "hydro")
  |> filter(fn: (r) => r["_field"] == "temperature")
  |> filter(fn: (r) => r["loc"] == "XXX")
  |> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false)
  |> yield(name: "max")

For some reason, for some days, this returns multiple measurements per day. But not always.

How do I get only the max entry per day?


Solution

  • You need to set the every parameter in the aggregateWindow method to 1d:

    from(bucket: "API")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r["_measurement"] == "hydro")
      |> filter(fn: (r) => r["_field"] == "temperature")
      |> filter(fn: (r) => r["loc"] == "XXX")
      |> aggregateWindow(every: 1d, fn: max, createEmpty: false)
      |> yield(name: "max")
    

    See the Flux documentation for more details.