docs-v2/content/enterprise_influxdb/v1/flux/guides/moving-average.md

3.0 KiB

title seotitle list_title description weight menu list_query_example canonical
Calculate the moving average Calculate the moving average in Flux Moving Average Use the `movingAverage()` or `timedMovingAverage()` functions to return the moving average of data. 10
enterprise_influxdb_v1
parent name
Query with Flux Moving Average
moving_average /influxdb/v2/query-data/flux/moving-average/

Use the movingAverage() or timedMovingAverage() functions 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: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:
|> timedMovingAverage(every: 2m, period: 4m)
_time _value
2020-01-01T00:02:00Z 1.000
2020-01-01T00:04:00Z 1.333
2020-01-01T00:06:00Z 1.325
2020-01-01T00:06:00Z 1.150
{{% /flex-content %}}
{{< /flex >}}