使用 Flux 在 InfluxDB 中按月或年聚合

导航至

一年多以前,我们首次提交并承诺支持 Flux 中一个非常需要的功能。这个功能早在 InfluxDB 1.x 版本时我们就想要了,但一直无法作为数据库的一部分来实现。直到现在。

最近,我们合并并部署了对 Flux 语言的更改,以支持在窗口化时将月和年作为特殊间隔。今天,我将向您展示如何使用此功能以及它可以为分析数据带来的强大功能。

此演示使用位于此处的 NOAA 示例数据集。我稍微修改了输入,删除了与 1.x 相关的行,并使用 curl 将数据写入新 bucket。然后,我在 Flux 中编写了以下代码。

from(bucket: "NOAA")
	    |> range(start: 2015-08-01T00:00:00Z, stop: 2015-10-01T00:00:00Z)
	    |> filter(fn: (r) => r._measurement == "h2o_feet" and r._field == "water_level")
	    |> aggregateWindow(every: 1mo, fn: mean)

它奏效了!当我运行此查询时,每个序列得到两个点。其中一个给出八月份的平均值,另一个给出九月份的平均值。但这不仅适用于 1 个月。我还可以使用 1y 来跨年聚合,它会考虑闰年。如果我想聚合每个季度发生多少请求,我只需使用 3mo 代替。

我们希望此功能将帮助人们更好地理解他们的数据,并且我们希望继续扩展 Flux 的功能,以帮助更好地理解数据。