文档文档

使用 InfluxDB 降采样数据

InfluxDB 任务最常见的用例之一是降采样数据,以随着时间的推移减少数据收集所造成的总体磁盘使用量。在以前版本的 InfluxDB 中,连续查询承担了这一角色。

本文档逐步介绍如何创建类似于连续查询的任务,该任务通过在时间窗口内聚合数据,然后将聚合值存储到新的 Bucket 中来降采样数据。

要求

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

“源” Bucket

从中查询数据的 Bucket。

“目标” Bucket

用于存储聚合的、降采样数据的单独 Bucket。

某种类型的聚合

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

降采样任务脚本示例

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

  1. 定义一个名为“cq-mem-data-1w”的任务,该任务每周运行一次。
  2. 定义一个 data 变量,该变量表示来自 system-data Bucket 的 mem 测量中的过去 2 周的所有数据。
  3. 使用 aggregateWindow() 函数 将数据窗口化为 1 小时间隔,并计算每个间隔的平均值。
  4. 将聚合的数据存储在 my-org 组织下的 system-data-downsampled Bucket 中。
// 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")

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

添加您的任务

一旦您的任务准备就绪,请参阅 创建任务 以获取有关将其添加到 InfluxDB 的信息。

需要考虑的事项

  • 如果数据可能延迟到达,请在您的任务选项中指定一个 offset,其长度足以考虑延迟数据。
  • 如果针对具有有限保留期的 Bucket 运行任务,请安排任务在保留期结束之前运行,以便降采样任务在保留期之外的数据被删除之前完成。

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看