InfluxQL转Flux

问题描述

查询的等效内容

Equatable
在助焊剂中?我尝试过
select sum("count") from "measurement_name" where time<Now() and time>Now()-4d group by time(100s),"source"

from(bucket:"metrics/default_metrics") 
 |> range(start: -4d) 
 |> filter(fn: (r)=> r._measurement == "measurement_name")
 |> group(columns: ["source"]) 
 |> window(every: 100s) 
 |> drop(columns:["_start","_stop","_measurement","column_a","column_b"]) 
 |> yield()

但它们似乎都产生不同的结果

这是按from(bucket:"metrics/default_metrics") |> range(start: -4d) |> filter(fn: (r)=> r._measurement == "measurement_name") |> window(every: 100s) |> group(columns: ["source"]) |> drop(columns:["_start","column_b"]) |> yield() time_interval = 100s分组的。假设按时间分组(是否隐式地汇总汇总?)是使用Flux的source函数完成的,但是InfluxQL查询(选择...)的结果是:

window

来自Flux查询的是

name: measurement_name
tags: source=source_name
time                sum
----                ---
1601022500000000000 39
1601022600000000000 191
1601022700000000000 232
1601022800000000000 145
1601022900000000000 207
1601023000000000000 277
1601023100000000000 160
1601023200000000000 228
1601023300000000000 253
1601023400000000000 167

最终目标是在Grafana中进行绘制。

也许还可以在这两种范式之间来回转换吗?只要有可能

解决方法

您需要显式包括sum()函数。我建议也使用aggregateWindow()

from(bucket:"metrics/default_metrics") 
 |> range(start: -4d) 
 |> filter(fn: (r)=> r._measurement == "measurement_name")
 |> group(columns: ["source"])
 |> aggregateWindow(every: 100s,fn: sum)
 |> drop(columns:["_start","_stop","_measurement","column_a","column_b"]) 
 |> yield()

通常,group不会保留排序顺序,但是aggregateWindow会在进行工作之前按时间进行排序。那是寻找的东西。此外,Flux和InfluxQL查询之间的时间界限可能不完全一致。我希望他们这样做,但请仔细检查。