title |
seotitle |
list_title |
description |
weight |
menu |
influxdb/v2.1/tags |
related |
list_query_example |
Calculate the moving average |
Calculate the moving average in Flux |
Moving Average |
Use `movingAverage()` or `timedMovingAverage()` to return the moving average of data.
|
210 |
influxdb_2_1 |
parent |
name |
Query with Flux |
Moving Average |
|
|
|
/{{< latest "flux" >}}/stdlib/universe/movingaverage/ |
/{{< latest "flux" >}}/stdlib/universe/timedmovingaverage/ |
|
moving_average |
Use [movingAverage()
](/{{< latest "flux" >}}/stdlib/universe/movingaverage/)
or [timedMovingAverage()
](/{{< latest "flux" >}}/stdlib/universe/timedmovingaverage/)
to return the moving average of data.
data
|> movingAverage(n: 5)
// OR
data
|> timedMovingAverage(every: 5m, period: 10m)
movingAverage()
For each row in a table, movingAverage()
returns the average of the current value and
previous values where n
is the total number of values used to calculate the average.
If n = 3
:
Row # |
Calculation |
1 |
Insufficient number of rows |
2 |
Insufficient number of rows |
3 |
(Row1 + Row2 + Row3) / 3 |
4 |
(Row2 + Row3 + Row4) / 3 |
5 |
(Row3 + Row4 + Row5) / 3 |
{{< flex >}}
{{% flex-content %}}
Given the following input:
_time |
_value |
2020-01-01T00:01:00Z |
1.0 |
2020-01-01T00:02:00Z |
1.2 |
2020-01-01T00:03:00Z |
1.8 |
2020-01-01T00:04:00Z |
0.9 |
2020-01-01T00:05:00Z |
1.4 |
2020-01-01T00:06:00Z |
2.0 |
{{% /flex-content %}} |
|
{{% flex-content %}} |
|
The following would return: |
|
|> movingAverage(n: 3)
_time |
_value |
2020-01-01T00:03:00Z |
1.33 |
2020-01-01T00:04:00Z |
1.30 |
2020-01-01T00:05:00Z |
1.36 |
2020-01-01T00:06:00Z |
1.43 |
{{% /flex-content %}} |
|
{{< /flex >}} |
|
timedMovingAverage()
For each row in a table, timedMovingAverage()
returns the average of the
current value and all row values in the previous period
(duration).
It returns moving averages at a frequency defined by the every
parameter.
Each color in the diagram below represents a period of time used to calculate an
average and the time a point representing the average is returned.
If every = 30m
and period = 1h
:
{{< svg "/static/svgs/timed-moving-avg.svg" >}}
{{< flex >}}
{{% flex-content %}}
Given the following input:
_time |
_value |
2020-01-01T00:00:00Z |
1.0 |
2020-01-01T00:30:00Z |
1.2 |
2020-01-01T01:00:00Z |
1.8 |
2020-01-01T01:30:00Z |
0.9 |
2020-01-01T02:00:00Z |
1.4 |
2020-01-01T02:30:00Z |
2.0 |
2020-01-01T03:00:00Z |
1.9 |
{{% /flex-content %}} |
|
{{% flex-content %}} |
|
The following would return: |
|
|> timedMovingAverage(every: 30m, period: 1h)
_time |
_value |
2020-01-01T00:30:00Z |
1.0 |
2020-01-01T01:00:00Z |
1.1 |
2020-01-01T01:30:00Z |
1.5 |
2020-01-01T02:00:00Z |
1.35 |
2020-01-01T02:30:00Z |
1.15 |
2020-01-01T03:00:00Z |
1.7 |
2020-01-01T03:00:00Z |
2 |
{{% /flex-content %}} |
|
{{< /flex >}} |
|