docs-v2/content/flux/v0/stdlib/universe/movingaverage.md

5.2 KiB

title description menu weight flux/v0/tags introduced
movingAverage() function `movingAverage()` calculates the mean of non-null values using the current value and `n - 1` previous values in the `_values` column.
flux_v0_ref
name parent identifier
movingAverage universe universe/movingAverage
101
transformations
0.35.0

movingAverage() calculates the mean of non-null values using the current value and n - 1 previous values in the _values column.

Moving average rules

  • The average over a period populated by n values is equal to their algebraic mean.
  • The average over a period populated by only null values is null.
  • Moving averages skip null values.
  • If n is less than the number of records in a table, movingAverage() returns the average of the available values.
Function type signature
(<-tables: stream[{A with _value: B}], n: int) => stream[{A with _value: float}] where B: Numeric

{{% caption %}} For more information, see Function type signatures. {{% /caption %}}

Parameters

n

({{< req >}}) Number of values to average.

tables

Input data. Default is piped-forward data (<-).

Examples

Calculate a three point moving average

import "sampledata"

sampledata.int()
    |> movingAverage(n: 3)

{{< expand-wrapper >}} {{% expand "View example input and output" %}}

Input data

_time _value *tag
2021-01-01T00:00:00Z -2 t1
2021-01-01T00:00:10Z 10 t1
2021-01-01T00:00:20Z 7 t1
2021-01-01T00:00:30Z 17 t1
2021-01-01T00:00:40Z 15 t1
2021-01-01T00:00:50Z 4 t1
_time _value *tag
2021-01-01T00:00:00Z 19 t2
2021-01-01T00:00:10Z 4 t2
2021-01-01T00:00:20Z -3 t2
2021-01-01T00:00:30Z 19 t2
2021-01-01T00:00:40Z 13 t2
2021-01-01T00:00:50Z 1 t2

Output data

_time _value *tag
2021-01-01T00:00:20Z 5 t1
2021-01-01T00:00:30Z 11.333333333333334 t1
2021-01-01T00:00:40Z 13 t1
2021-01-01T00:00:50Z 12 t1
_time _value *tag
2021-01-01T00:00:20Z 6.666666666666667 t2
2021-01-01T00:00:30Z 6.666666666666667 t2
2021-01-01T00:00:40Z 9.666666666666666 t2
2021-01-01T00:00:50Z 11 t2

{{% /expand %}} {{< /expand-wrapper >}}

Calculate a three point moving average with null values

import "sampledata"

sampledata.int(includeNull: true)
    |> movingAverage(n: 3)

{{< expand-wrapper >}} {{% expand "View example input and output" %}}

Input data

_time _value *tag
2021-01-01T00:00:00Z -2 t1
2021-01-01T00:00:10Z t1
2021-01-01T00:00:20Z 7 t1
2021-01-01T00:00:30Z t1
2021-01-01T00:00:40Z t1
2021-01-01T00:00:50Z 4 t1
_time _value *tag
2021-01-01T00:00:00Z t2
2021-01-01T00:00:10Z 4 t2
2021-01-01T00:00:20Z -3 t2
2021-01-01T00:00:30Z 19 t2
2021-01-01T00:00:40Z t2
2021-01-01T00:00:50Z 1 t2

Output data

_time _value *tag
2021-01-01T00:00:20Z 2.5 t1
2021-01-01T00:00:30Z 7 t1
2021-01-01T00:00:40Z 7 t1
2021-01-01T00:00:50Z 4 t1
_time _value *tag
2021-01-01T00:00:20Z 0.5 t2
2021-01-01T00:00:30Z 6.666666666666667 t2
2021-01-01T00:00:40Z 8 t2
2021-01-01T00:00:50Z 10 t2

{{% /expand %}} {{< /expand-wrapper >}}