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

6.2 KiB

title description menu weight flux/v0/tags introduced
integral() function `integral()` computes the area under the curve per unit of time of subsequent non-null records.
flux_v0_ref
name parent identifier
integral universe universe/integral
101
transformations
aggregates
0.7.0

integral() computes the area under the curve per unit of time of subsequent non-null records.

integral() requires _start and _stop columns that are part of the group key. The curve is defined using _time as the domain and record values as the range.

Function type signature
(
    <-tables: stream[A],
    ?column: string,
    ?interpolate: string,
    ?timeColumn: string,
    ?unit: duration,
) => stream[B] where A: Record, B: Record

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

Parameters

unit

Unit of time to use to compute the integral.

column

Column to operate on. Default is _value.

timeColumn

Column that contains time values to use in the operation. Default is _time.

interpolate

Type of interpolation to use. Default is "".

Available interplation types:

  • linear
  • empty string for no interpolation

tables

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

Examples

Calculate the integral

data
    |> integral(unit: 10s)

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

Input data

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

Output data

*_start *_stop *tag _value
2021-01-01T00:00:00Z 2021-01-01T00:01:00Z t1 50
*_start *_stop *tag _value
2021-01-01T00:00:00Z 2021-01-01T00:01:00Z t2 43

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

Calculate the integral with linear interpolation

data
    |> integral(unit: 10s, interpolate: "linear")

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

Input data

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

Output data

*_start *_stop *tag _value
2021-01-01T00:00:00Z 2021-01-01T00:01:00Z t1 25
*_start *_stop *tag _value
2021-01-01T00:00:00Z 2021-01-01T00:01:00Z t2 32.5

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