文档文档

aggregateWindow() function

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 纪元开始递增周数,Unix 纪元是星期四。 因此,默认情况下,所有 1w 窗口都从星期四开始。 使用 offset 参数将每周窗口的开始时间移动到所需的一周中的某一天。

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

查看示例输入和输出


此页面对您有帮助吗?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源现在以公开 Alpha 版提供

InfluxDB 3 开源现已可用于 alpha 测试,根据 MIT 或 Apache 2 许可进行许可。

我们将发布两个产品作为 alpha 版的一部分。

InfluxDB 3 Core 是我们新的开源产品。 它是用于时间序列和事件数据的最新数据引擎。 InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可伸缩性和细粒度的安全性。

有关如何入门的更多信息,请查看