Sta*_*ers 4 time-series influxdb
我一直在使用 Flux 查询语言解决 influxDB 中的时间分组问题。我可以用生成的数据来说明,从 2021 年 1 月 1 日到 2021 年 1 月 5 日,每天一个条目。
import "generate"
data = generate.from(
count: 5,
fn: (n) => n + 1,
start: 2021-01-01T00:00:00Z,
stop: 2021-01-06T00:00:00Z,
)
data
|> range(start: 2021-01-01T00:00:00Z, stop: 2021-01-05T05:00:00Z)
Run Code Online (Sandbox Code Playgroud)
生成:
| _桌子 | _价值 | _开始 | _停止 | _时间 |
|---|---|---|---|---|
| 0 | 1 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-01T00:00:00.000Z |
| 0 | 2 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-02T00:00:00.000Z |
| 0 | 3 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-03T00:00:00.000Z |
| 0 | 4 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-04T00:00:00.000Z |
| 0 | 5 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-05T00:00:00.000Z |
现在我每天查询数据并汇总
import "generate"
data = generate.from(
count: 5,
fn: (n) => n + 1,
start: 2021-01-01T00:00:00Z,
stop: 2021-01-06T00:00:00Z,
)
data
|> range(start: 2021-01-01T00:00:00Z, stop: 2021-01-05T23:59:00Z)
|> aggregateWindow(every: 1d, fn: sum, createEmpty: false)
Run Code Online (Sandbox Code Playgroud)
我明白了
| _桌子 | _价值 | _开始 | _停止 | _时间 |
|---|---|---|---|---|
| 0 | 1 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-02T00:00:00.000Z |
| 0 | 2 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-03T00:00:00.000Z |
| 0 | 3 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-04T00:00:00.000Z |
| 0 | 4 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-05T00:00:00.000Z |
| 0 | 5 | 2021-01-01T00:00:00.000Z | 2021-01-05T23:59:00.000Z | 2021-01-05T23:59:00.000Z |
第一次是2021-01-02T00:00:00.000Z和不是2021-01-01,最后两个条目涵盖同一天2021-01-05。
如何使用 Flux 获取每天的条目如下:
您只需更改/添加窗口函数timeSrc中的参数即可aggregateWindow。默认情况下,Flux 将用作_stop参数值,创建“高”绑定窗口。
让我们让您的示例变得更简单一些,为了更好地说明,时间在一天结束/开始时并不准确:例如,如果系统时间是 22:20,我会发出一个范围为“-1h”并按 1h、Flux 分组的查询将创建两个翻滚时间窗口:21:00-22:00 和 22:00-23:00。事实上,Flux 会检测其范围并将这些全局时间窗口截断为 21:20-22:00 和 22:00-22:20。
如果现在将aggregateWindow timeSrc 设置为_stop,则时间列将为22:00 和22:20。[前面提到的每个时间窗口的结束]。如果您选择“_start”,时间列将为 21:20 和 22:00。
如果您在上面的示例中想要 21:00 和 22:00,我建议将您的范围调整为:range(start: date.truncate(t: -24h, unit: 1h)这通常也更有意义,因为第一个存储桶也包含该存储桶中的所有数据。
| 归档时间: |
|
| 查看次数: |
6697 次 |
| 最近记录: |