文档文档

aggregateWindow() 函数

aggregateWindow() 通过将数据分组到固定时间窗口并将聚合或选择器函数应用于每个窗口来对数据进行降采样。

除了指定的 column 之外,组键中不存在的所有列都将从输出表中删除。这包括 _timeaggregateWindow() 使用 timeSrctimeDst 参数为聚合值分配时间。

aggregateWindow() 需要输入数据中包含 _start_stop 列。使用 range() 分配 _start_stop 值。

timeColumn(默认为 _time)不在组键中时,此函数旨在使用。如果 timeColumn 组键中,则生成的输出令人困惑,通常没有用处。

按日历月和年进行降采样

everyperiodoffset 参数支持所有有效的持续时间单位,包括日历月 (1mo) 和年 (1y)。

按周降采样

当按周 (1w) 窗口化时,周是使用 Unix 纪元 (1970-01-01T00:00:00Z UTC) 确定的。Unix 纪元是在星期四,因此所有计算的周都从星期四开始。

函数类型签名
(
    <-tables: stream[D],
    every: duration,
    fn: (<-: stream[B], column: A) => stream[C],
    ?column: A,
    ?createEmpty: bool,
    ?location: {zone: string, offset: duration},
    ?offset: duration,
    ?period: duration,
    ?timeDst: string,
    ?timeSrc: string,
) => stream[E] where B: Record, C: Record, D: Record, E: Record

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

参数

every

必需)窗口之间的时间间隔持续时间。

period

窗口的持续时间。默认为 every 值。

period 可以为负数,表示开始和停止边界已反转。

offset

窗口边界偏移的持续时间。默认为 0s

offset 可以为负数,表示偏移在时间上向后移动。

fn

必需)应用于每个时间窗口的聚合或选择器函数。

location

用于确定时区的位置。默认为 location 选项。

column

要操作的列。

timeSrc

用作聚合值新时间值来源的列。默认为 _stop

timeDst

用于存储聚合值的时间值的列。默认为 _time

createEmpty

为空窗口创建空表。默认为 true

注意: 当使用 createEmpty: true 时,聚合函数返回空表,但选择器函数不返回。按照设计,选择器会删除空表。

tables

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

示例

使用带有默认参数的聚合函数

data
    |> aggregateWindow(every: 20s, fn: mean)

查看示例输入和输出

指定聚合函数的参数

要使用未为 aggregateWindow() 的必需参数提供默认值的函数,请定义一个匿名函数,其中包含 columntables 参数,这些参数将表管道转发到聚合或选择器函数中,并定义所有必需的参数

data
    |> aggregateWindow(
        column: "_value",
        every: 20s,
        fn: (column, tables=<-) => tables |> quantile(q: 0.99, column: column),
    )

查看示例输入和输出

按日历月降采样

data
    |> aggregateWindow(every: 1mo, fn: mean)

查看示例输入和输出

按星期一作为开始的日历周降采样

Flux 从 Unix 纪元(星期四)开始递增周。因此,默认情况下,所有 1w 窗口都从星期四开始。使用 offset 参数将每周窗口的开始时间偏移到所需的工作日。

周开始偏移量
星期一-3d
星期二-2d
星期三-1d
星期四0d
星期五1d
星期六2d
星期日3d
data
    |> aggregateWindow(every: 1w, offset: -3d, fn: mean)

查看示例输入和输出


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看