文档

使用 Flux 查询 InfluxDB

本指南将指导您如何使用 Flux 从 InfluxDB 查询数据的基本操作。每个 Flux 查询都需要以下内容

  1. 数据源
  2. 时间范围
  3. 数据过滤器

1. 定义您的数据源

Flux 的 from() 函数定义了一个 InfluxDB 数据源。它需要一个 bucket 参数。以下示例使用 example-bucket 作为桶名。

from(bucket:"example-bucket")

2. 指定时间范围

Flux 在查询时间序列数据时需要时间范围。“无界”查询非常消耗资源,作为保护措施,Flux 不会在没有指定范围的情况下查询数据库。

使用管道向前操作符|>)将数据源中的数据导入到range()中,该函数用于指定查询的时间范围。它接受两个参数:startstop。开始和结束值可以使用负的持续时间进行相对指定,或使用时间戳进行绝对指定。

示例相对时间范围
// Relative time range with start only. Stop defaults to now.
from(bucket:"example-bucket")
    |> range(start: -1h)

// Relative time range with start and stop
from(bucket:"example-bucket")
    |> range(start: -1h, stop: -10m)

相对范围相对于“现在”。

示例绝对时间范围
from(bucket:"example-bucket")
    |> range(start: 2021-01-01T00:00:00Z, stop: 2021-01-01T12:00:00Z)

使用以下

在本指南中,使用相对时间范围-15m来限制查询结果只包含最后15分钟的数据

from(bucket:"example-bucket")
    |> range(start: -15m)

3. 过滤数据

将范围数据传递给filter()以根据数据属性或列缩小结果。`filter()`有一个参数fn,它期望一个谓词函数,该函数通过列值评估行。

filter()遍历每一行输入并将行数据结构化为Flux的记录。记录作为r传递给谓词函数,并使用谓词表达式进行评估。

评估为false的行将从输出数据中删除。评估为true的行将保留在输出数据中。

// Pattern
(r) => (r.recordProperty comparisonOperator comparisonExpression)

// Example with single filter
(r) => (r._measurement == "cpu")

// Example with multiple filters
(r) => (r._measurement == "cpu" and r._field != "usage_system")

使用以下

对于此示例,通过cpu测量、usage_system字段和cpu-total标签值进行过滤

from(bucket: "example-bucket")
    |> range(start: -15m)
    |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_system" and r.cpu == "cpu-total")

4. 返回查询数据

yield()输出查询的结果。

from(bucket: "example-bucket")
    |> range(start: -15m)
    |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_system" and r.cpu == "cpu-total")
    |> yield()

Flux默认在每个脚本的末尾假设一个yield()函数来输出和可视化数据。仅在同一个Flux查询中包含多个查询时才需要显式调用yield()。每组返回的数据都需要使用yield()函数进行命名。

恭喜!

您现在已使用Flux从InfluxDB查询数据。

这里显示的查询是一个基本示例。Flux查询可以通过多种方式扩展来形成强大的脚本。


这个页面有帮助吗?

感谢您的反馈!


Flux的未来

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

阅读更多

InfluxDB v3增强和InfluxDB集群版现已正式发布

新功能,包括更快的查询性能和管理工具,推动了InfluxDB v3产品线的发展。InfluxDB集群版现已正式发布。

InfluxDB v3性能和特性

InfluxDB v3产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括一个操作仪表板来监控您的InfluxDB集群的健康状况,InfluxDB云专用的单点登录(SSO)支持,以及用于令牌和数据库的新管理API。

了解v3的新增强功能


InfluxDB集群版正式发布

InfluxDB集群版现已正式发布,并为您在自托管堆栈中提供了InfluxDB v3的强大功能。

与我们讨论InfluxDB集群版