【问题标题】:InfluxQL to FluxInfluxQL 到 Flux
【发布时间】:2021-01-15 01:11:48
【问题描述】:

这个查询的等价物是什么

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","_stop","_measurement","column_a","column_b"]) 
 |> yield()

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

这是按time_interval = 100ssource 分组的。据说,按时间分组(以及隐式聚合?)是使用 Flux 中的 window 函数完成的,但 InfluxQL 查询(选择...)的结果是:

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

而来自 Flux 查询的是

Table: keys: [source]
source:string        _time:time                                 _value:int    _field:string  
----------------------  ------------------------------  --------------------------  -------- 

source_name  2020-09-25T11:46:51.390000000Z                           6              count  
source_name  2020-09-25T11:46:54.124000000Z                           5              count  
source_name  2020-09-25T11:46:57.616000000Z                           6              count  
source_name  2020-09-25T11:46:57.999000000Z                           9              count  
source_name  2020-09-25T11:46:58.064000000Z                           3              count  
source_name  2020-09-25T11:46:58.307000000Z                           6              count  
source_name  2020-09-25T11:47:01.011000000Z                           8              count  
source_name  2020-09-25T11:47:03.634000000Z                           6              count  
source_name  2020-09-25T11:47:03.700000000Z                           8              count  
source_name  2020-09-25T11:47:04.144000000Z                           8              count 

最终目标是在 Grafana 中绘制出来。

是否还有一种方法可以在这两种范式之间来回转换?当然,只要有可能

【问题讨论】:

    标签: influxdb influxql


    【解决方案1】:

    您需要明确包含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 查询之间的时间界限可能不完全一致。我希望他们会这样做,但请仔细检查。

    【讨论】:

      猜你喜欢
      • 2022-08-17
      • 2020-12-08
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 2022-09-24
      • 1970-01-01
      • 2015-01-31
      相关资源
      最近更新 更多