Join 如何在Grafana中使用XDB flux查询以特定方式合并(连接)两个表?

Join 如何在Grafana中使用XDB flux查询以特定方式合并(连接)两个表?,join,merge,grafana,influxdb,fluxlang,Join,Merge,Grafana,Influxdb,Fluxlang,格拉法纳:7.1.5 xdB:1.8 我目前在Grafana中有三个单独的表面板,每个查询之间的唯一区别是时间范围(年、月、日)。我想将这三个表合并为一个表,其中度量值分为三列(每个时间范围一列) 更明确地说,我目前拥有的是: 表1列:[Tag1+Tag2,_值]其中_值是此单位 年 表2列:[Tag1+Tag2,_值]其中_值为单位 这个月 表3列:[Tag1+Tag2,_值]其中_值是此单位 一天 我想要的是: 表列:[Tag1+Tag2,表1\u值(年),表2\u值(月),表3\u值(

格拉法纳:7.1.5 xdB:1.8

我目前在Grafana中有三个单独的表面板,每个查询之间的唯一区别是时间范围(年、月、日)。我想将这三个表合并为一个表,其中度量值分为三列(每个时间范围一列)

更明确地说,我目前拥有的是:

  • 表1列:[Tag1+Tag2,_值]其中_值是此单位 年
  • 表2列:[Tag1+Tag2,_值]其中_值为单位 这个月
  • 表3列:[Tag1+Tag2,_值]其中_值是此单位 一天
我想要的是:

表列:[Tag1+Tag2,表1\u值(年),表2\u值(月),表3\u值(日)]

以下是我的疑问:

import "date"
thisYearSoFar = date.truncate(t: now(), unit: 1y)
thisMonthSoFar = date.truncate(t: now(), unit: 1mo)
thisDaySoFar = date.truncate(t: now(), unit: 1d)

from(bucket: "consumption") 
|> range(start: thisYearSoFar, stop: now()) 
|> filter(fn: (r) => r._measurement == "stuff" and r._field == "units" and r._value > 0) 
|> group(columns: ["datacenter","tenant"]) 
|> sum(column: "_value")
|> map(fn: (r) => ({r with _value: r._value / 4.0}))

from(bucket: "consumption") 
|> range(start: thisMonthSoFar, stop: now()) 
|> filter(fn: (r) => r._measurement == "stuff" and r._field == "units" and r._value > 0) 
|> group(columns: ["datacenter","tenant"]) 
|> sum(column: "_value")
|> map(fn: (r) => ({r with _value: r._value / 4.0}))

from(bucket: "consumption") 
|> range(start: thisDaySoFar, stop: now()) 
|> filter(fn: (r) => r._measurement == "stuff" and r._field == "units" and r._value > 0) 
|> group(columns: ["datacenter","tenant"]) 
|> sum(column: "_value")
|> map(fn: (r) => ({r with _value: r._value / 4.0}))
我尝试过以各种方式连接这些表,但我所做的任何事情都无法正常工作,无法得到我正在寻找的一个包含4列的表


有人对如何实现这一点有想法吗?谢谢

我与一位Flux开发者合作,帮助我想出了解决方案:

import "date"
sum_over_range = (unit) =>
    from(bucket: "consumption")
    |> range(start: date.truncate(t: now(), unit: unit))
    |> filter(fn: (r) => r._measurement == "stuff" and r._field == "units" and r._value > 0)
    |> group(columns: ["datacenter", "tenant"])
    |> sum()
    |> map(fn: (r) => ({r with _value: r._value / 4.0, _field: string(v: unit), _time: 0}))

union(tables: [sum_over_range(unit: 1y), sum_over_range(unit: 1mo), sum_over_range(unit: 1d)
])
    |> group(columns: ["datacenter", "tenant"])
    |> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
    |> drop(columns: ["_time", "_start", "_stop", "result"])
    |> group()
此外,在Grafana中,我必须应用“按名称筛选”转换来隐藏显示的“结果”和“表”列