Comparing values from different buckets
This example uses NOAA water sample data.
This example compares the value from the latest point to an average value stored in another bucket. This is useful when using the average value to calculate a threshold check.
The following query:
- Uses 
range()to define a time range. - Gets the last value in the 
meansbucket and compares it to the last value in thenoaabucket usinglast(). - Uses 
join()to combine the results - Uses 
map()to calculate the differences 
means = from(bucket: "weekly_means")
    |> range(start: 2019-09-01T00:00:00Z)
    |> last()
    |> keep(columns: ["_value", "location"])
latest = from(bucket: "noaa")
    |> range(start: 2019-09-01T00:00:00Z)
    |> filter(fn: (r) => r._measurement == "average_temperature")
    |> last()
    |> keep(columns: ["_value", "location"])
join(tables: {mean: means, reading: latest}, on: ["location"])
    |> map(fn: (r) => ({r with deviation: r._value_reading - r._value_mean}))Example results
| location | _value_mean | _value_reading | deviation | 
|---|---|---|---|
| coyote_creek | 79.82710622710623 | 89 | 9.172893772893772 | 
| santa_monica | 80.20451339915374 | 85 | 4.79548660084626 | 
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for InfluxDB and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support.