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

3.8 KiB

title description menu weight flux/v0/tags introduced
stateCount() function `stateCount()` returns the number of consecutive rows in a given state.
flux_v0_ref
name parent identifier
stateCount universe universe/stateCount
101
transformations
0.7.0

stateCount() returns the number of consecutive rows in a given state.

The state is defined by the fn predicate function. For each consecutive record that evaluates to true, the state count is incremented. When a record evaluates to false, the value is set to -1 and the state count is reset. If the record generates an error during evaluation, the point is discarded, and does not affect the state count. The state count is added as an additional column to each record.

Function type signature
(<-tables: stream[A], fn: (r: A) => bool, ?column: string) => stream[B] where A: Record, B: Record

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

Parameters

fn

({{< req >}}) Predicate function that identifies the state of a record.

column

Column to store the state count in. Default is stateCount.

tables

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

Examples

Count the number rows in a specific state

import "sampledata"

sampledata.int()
    |> stateCount(fn: (r) => r._value < 10)

{{< 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 stateCount
2021-01-01T00:00:00Z -2 t1 1
2021-01-01T00:00:10Z 10 t1 -1
2021-01-01T00:00:20Z 7 t1 1
2021-01-01T00:00:30Z 17 t1 -1
2021-01-01T00:00:40Z 15 t1 -1
2021-01-01T00:00:50Z 4 t1 1
_time _value *tag stateCount
2021-01-01T00:00:00Z 19 t2 -1
2021-01-01T00:00:10Z 4 t2 1
2021-01-01T00:00:20Z -3 t2 2
2021-01-01T00:00:30Z 19 t2 -1
2021-01-01T00:00:40Z 13 t2 -1
2021-01-01T00:00:50Z 1 t2 1

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