Calculate the rate of change
This page documents an earlier version of InfluxDB. InfluxDB v2.1 is the latest stable version. See the equivalent InfluxDB v2.1 documentation: Calculate the rate of change.
Use the derivative()
function
to calculate the rate of change between subsequent values or the
aggregate.rate()
function
to calculate the average rate of change per window of time.
If time between points varies, these functions normalize points to a common time interval
making values easily comparable.
Rate of change between subsequent values
Use the derivative()
function
to calculate the rate of change per unit of time between subsequent non-null values.
data
|> derivative(unit: 1s)
By default, derivative()
returns only positive derivative values and replaces negative values with null.
Cacluated values are returned as floats.
Given the following input:
_time | _value |
---|---|
2020-01-01T00:00:00Z | 250 |
2020-01-01T00:04:00Z | 160 |
2020-01-01T00:12:00Z | 150 |
2020-01-01T00:19:00Z | 220 |
2020-01-01T00:32:00Z | 200 |
2020-01-01T00:51:00Z | 290 |
2020-01-01T01:00:00Z | 340 |
derivative(unit: 1m)
returns:
_time | _value |
---|---|
2020-01-01T00:04:00Z | |
2020-01-01T00:12:00Z | |
2020-01-01T00:19:00Z | 10.0 |
2020-01-01T00:32:00Z | |
2020-01-01T00:51:00Z | 4.74 |
2020-01-01T01:00:00Z | 5.56 |
Results represent the rate of change per minute between subsequent values with negative values set to null.
Return negative derivative values
To return negative derivative values, set the nonNegative
parameter to false
,
Given the following input:
_time | _value |
---|---|
2020-01-01T00:00:00Z | 250 |
2020-01-01T00:04:00Z | 160 |
2020-01-01T00:12:00Z | 150 |
2020-01-01T00:19:00Z | 220 |
2020-01-01T00:32:00Z | 200 |
2020-01-01T00:51:00Z | 290 |
2020-01-01T01:00:00Z | 340 |
The following returns:
|> derivative(
unit: 1m,
nonNegative: false
)
_time | _value |
---|---|
2020-01-01T00:04:00Z | -22.5 |
2020-01-01T00:12:00Z | -1.25 |
2020-01-01T00:19:00Z | 10.0 |
2020-01-01T00:32:00Z | -1.54 |
2020-01-01T00:51:00Z | 4.74 |
2020-01-01T01:00:00Z | 5.56 |
Results represent the rate of change per minute between subsequent values and include negative values.
Average rate of change per window of time
Use the aggregate.rate()
function
to calculate the average rate of change per window of time.
import "experimental/aggregate"
data
|> aggregate.rate(
every: 1m,
unit: 1s,
groupColumns: ["tag1", "tag2"]
)
aggregate.rate()
returns the average rate of change (as a float)
per unit
for time intervals defined by every
.
Negative values are replaced with null.
aggregate.rate()
does not support nonNegative: false
.
Given the following input:
_time | _value |
---|---|
2020-01-01T00:00:00Z | 250 |
2020-01-01T00:04:00Z | 160 |
2020-01-01T00:12:00Z | 150 |
2020-01-01T00:19:00Z | 220 |
2020-01-01T00:32:00Z | 200 |
2020-01-01T00:51:00Z | 290 |
2020-01-01T01:00:00Z | 340 |
The following returns:
|> aggregate.rate(
every: 20m,
unit: 1m
)
_time | _value |
---|---|
2020-01-01T00:20:00Z | |
2020-01-01T00:40:00Z | 10.0 |
2020-01-01T01:00:00Z | 4.74 |
2020-01-01T01:20:00Z | 5.56 |
Results represent the average change rate per minute of every 20 minute interval with negative values set to null. Timestamps represent the right bound of the time window used to average values.
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, the following resources are available:
InfluxDB Cloud and InfluxDB Enterprise customers can contact InfluxData Support.