文档文档

events.duration() 函数

events.duration() 是用户贡献的函数,由包作者维护。

events.duration() 计算事件的持续时间。

该函数确定记录与后续记录之间的时间,并将持续时间与第一条记录(事件的开始)关联。要计算最后一个事件的持续时间,该函数会将最后一条记录的时间戳与 stopColumn 中的时间戳或指定的停止时间进行比较。

类似函数

events.duration()elapsed()stateDuration() 类似,但在重要方面有所不同

  • elapsed() 会删除第一条记录。events.duration() 不会。
  • stateDuration() 计算在状态(由谓词函数确定)中花费的总时间。events.duration() 返回所有记录及其后续记录之间的持续时间。

请参阅下面的示例

函数类型签名
(
    <-tables: stream[A],
    ?columnName: string,
    ?stop: time,
    ?stopColumn: string,
    ?timeColumn: string,
    ?unit: duration,
) => stream[B] where A: Record, B: Record

有关更多信息,请参阅函数类型签名

参数

unit

计算状态持续时间的持续时间单位。默认为 1ns

columnName

结果列的名称。默认为 "duration"

timeColumn

时间列的名称。默认为 "_time"

stopColumn

停止列的名称。默认为 "_stop"

stop

计算结果时使用的最晚时间。

如果提供,stop 将覆盖 stopColumn 中的时间值。

tables

输入数据。默认为管道转发数据 (<-)。

示例

计算状态的持续时间

import "array"
import "contrib/tomhollingworth/events"

data
    |> events.duration(unit: 1m, stop: 2020-01-02T00:00:00Z)

查看示例输入和输出

与类似函数比较

以下示例包括与输入数据的 _timestate 值相关的 events.duration()elapsed()stateDuration() 的输出值。

import "array"
import "contrib/tomhollingworth/events"

union(
    tables: [
        data
            |> events.duration(unit: 1m, stop: 2020-01-02T00:00:00Z)
            |> map(
                fn: (r) =>
                    ({
                        _time: r._time,
                        state: r.state,
                        function: "events.Duration()",
                        value: r.duration,
                    }),
            ),
        data
            |> elapsed(unit: 1m)
            |> map(
                fn: (r) =>
                    ({_time: r._time, state: r.state, function: "elapsed()", value: r.elapsed}),
            ),
        data
            |> stateDuration(unit: 1m, fn: (r) => true)
            |> map(
                fn: (r) =>
                    ({
                        _time: r._time,
                        state: r.state,
                        function: "stateDuration()",
                        value: r.stateDuration,
                    }),
            ),
    ],
)
    |> pivot(rowKey: ["_time", "state"], columnKey: ["function"], valueColumn: "value")

查看示例输出


此页内容是否有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最新的数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看