TL;DR 技术技巧 — Flux 时间范围

导航至

在这篇文章中,我们分享一些关于在 Flux 中使用时间范围的基础知识。

问:时间范围在 Flux 查询中起什么作用?

答:Flux 在查询 InfluxDB 时需要时间范围。“无界”查询非常消耗资源,作为一种保护措施,Flux 不会在没有指定范围的情况下查询 InfluxDB。

在使用 from() 函数定义数据源后,使用管道前向运算符 (|>) 将数据从数据源管道传输到 range() 函数。(我们将在下面深入探讨具体示例。)

问:range() 函数有哪些参数?

答:range() 函数 有两个参数:start(开始时间),结果中包含的最早时间,和 stop(结束时间)。对于每个参数,定义相对时间或绝对时间。请在下面了解有关每个选项的更多信息。

问:如何在 Flux 中设置相对时间范围?

答:使用相对于 now() 的持续时间为您的 Flux 查询定义相对范围。持续时间格式为持续时间字面量,表示一段时间长度,包含整数部分和持续时间单位部分:例如,-1h 表示现在之前一小时的时间范围。

Flux 查询中的相对时间范围示例

// 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)
  // ...

问:如何在 Flux 中设置绝对时间范围?

答:使用时间戳为您的 Flux 查询定义绝对范围。时间戳格式为日期和时间字面量,由日期部分、时间部分和可选的时间偏移部分组成:例如,2019-10-15T09:00:00 表示 2019 年 10 月 15 日。

绝对时间范围示例

from(bucket:"example-bucket")
  |> range(start: 2019-11-05T23:30:00Z, stop: 2019-11-06T00:00:00Z)
  // ...

问:range() 函数是否包含与开始时间或结束时间匹配的点?

答:对于 start 参数,结果包括与指定的开始时间匹配的点。对于 stop 参数,结果排除与指定的结束时间匹配的点。

在以下示例中,与 -12h 匹配的点将被包括在内,而与 -15m 匹配的点将被排除在外。

from(bucket:"example-bucket")
  |> range(start:-12h, stop: -15m)
  // ...