Documentation

使用InfluxDB降采样数据

InfluxDB 任务最常见的用例之一是对数据进行降采样,以减少随着时间的推移数据收集所占用的整体磁盘空间。 在之前版本的 InfluxDB 中,持续查询承担了这个角色。

这篇文章介绍了创建一个连续查询任务,该任务通过在时间窗口内聚合数据来对数据进行降采样,然后将聚合值存储在新的桶中。

要求

要执行下采样任务,您需要以下内容:

一个“源”桶

从中查询数据的桶。

一个“目的地”存储桶

一个单独的桶,用于存储聚合的、降采样的数据。

某种类型的聚合

要对数据进行降采样,必须以某种方式进行聚合。您使用的具体聚合方法取决于您的具体用例,但示例包括均值、中位数、顶部、底部等。查看 Flux 的聚合函数 以获取更多信息和想法。

示例下采样任务脚本

下面的示例任务脚本是数据下采样的一种非常基本的形式,执行以下操作:

  1. 定义一个名为“cq-mem-data-1w”的任务,该任务每周运行一次。
  2. 定义一个 data 变量,该变量表示 system-data 这个桶中 mem 测量的过去2周的所有数据。
  3. 使用aggregateWindow()函数将数据分成1小时的时间窗口,并计算每个时间窗口的平均值。
  4. 将聚合数据存储在 system-data-downsampled 存储桶下的 my-org 组织中。
// Task Options
option task = {name: "cq-mem-data-1w", every: 1w}

// Defines a data source
data = from(bucket: "system-data")
    |> range(start: -duration(v: int(v: task.every) * 2))
    |> filter(fn: (r) => r._measurement == "mem")

data
    // Windows and aggregates the data in to 1h averages
    |> aggregateWindow(fn: mean, every: 1h)
    // Stores the aggregated data in a new bucket
    |> to(bucket: "system-data-downsampled", org: "my-org")

再一次,这是一个非常基础的示例,但它应该为您提供一个基础, 以构建更复杂的下采样任务。

添加您的任务

一旦您的任务准备好了,请参见 Create a task 以获取有关将其添加到 InfluxDB 的信息。

需要考虑的事项

  • 如果数据可能会晚到,请在您的任务选项中指定一个足够长的 offset 以考虑迟到的数据。
  • 如果在具有有限保留期的桶上运行任务,请安排任务在保留期结束之前运行,以便在超出保留期的数据被丢弃之前,让下采样任务完成。


Flux的未来

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

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

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

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

有关如何开始的更多信息,请查看:

由TSM驱动的InfluxDB Cloud