Documentation

events.duration() function

Flux 0.91.0+

The events.duration() function is a user-contributed function maintained by the package author and can be updated or removed at any time.

The events.duration() function calculates the duration of events. The function determines the time between a record and the subsequent record and associates the duration with the first record (start of the event). To calculate the duration of the last event, the function compares the timestamp of the final record to the timestamp in the stopColumn or the specified stop time.

import "contrib/tomhollingworth/events"

events.duration(
  unit: 1ns,
  columnName: "duration",
  timeColumn: "_time",
  stopColumn: "_stop",
  stop: 2020-01-01T00:00:00Z
)

Similar functions

events.duration() is similar to elapsed() and stateDuration(), but differs in important ways:

  • elapsed() drops the first record. events.duration() does not.
  • stateDuration() calculates the total time spent in a state (determined by a predicate function). events.duration() returns the duration between all records and their subsequent records.

For examples, see below.

Parameters

unit

Duration unit of the calculated state duration. Default is 1ns

columnName

Name of the result column. Default is "duration".

timeColumn

Name of the time column. Default is "_time".

stopColumn

Name of the stop column. Default is "_stop".

stop

The latest time to use when calculating results. If provided, stop overrides the time value in the stopColumn.

tables

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

Examples

Calculate the duration of states
import "contrib/tomhollingworth/events"

data
  |> events.duration(
    unit: 1m,
    stop: 2020-01-02T00:00:00Z
  )
Input
_time state
2020-01-01T00:00:00Z ok
2020-01-01T00:12:34Z warn
2020-01-01T00:25:01Z ok
2020-01-01T16:07:55Z crit
2020-01-01T16:54:21Z warn
2020-01-01T18:20:45Z ok
Output
_time state duration
2020-01-01T00:00:00Z ok 12
2020-01-01T00:12:34Z warn 12
2020-01-01T00:25:01Z ok 942
2020-01-01T16:07:55Z crit 46
2020-01-01T16:54:21Z warn 86
2020-01-01T18:20:45Z ok 339

Compared to similar functions

The example below includes output values of events.duration(), elapsed(), and stateDuration() related to the _time and state values of input data.

Input
_time state
2020-01-01T00:00:00Z ok
2020-01-01T00:12:34Z warn
2020-01-01T00:25:01Z ok
2020-01-01T16:07:55Z crit
2020-01-01T16:54:21Z warn
2020-01-01T18:20:45Z ok
Functions
data |> events.duration(
  unit: 1m,
  stop: 2020-01-02T00:00:00Z
)

data |> elapsed(
  unit: 1m
)

data |> stateDuration(
  unit: 1m,
  fn: (r) => true
)
Output values
_time state events.duration() elapsed() stateDuration()
2020-01-01T00:00:00Z ok 12 N/A 0
2020-01-01T00:12:34Z warn 12 12 12
2020-01-01T00:25:01Z ok 942 12 25
2020-01-01T16:07:55Z crit 46 942 967
2020-01-01T16:54:21Z warn 86 46 1014
2020-01-01T18:20:45Z ok 339 86 1100

Package author and maintainer

Github: @tomhollingworth
InfluxDB Slack: @Tom Hollingworth


Upgrade to InfluxDB Cloud or InfluxDB 2.0!

InfluxDB Cloud and InfluxDB OSS 2.0 ready for production.