Influxdb 如何在XDB2.0仪表板上获取查询变量?

Influxdb 如何在XDB2.0仪表板上获取查询变量?,influxdb,chronograf,Influxdb,Chronograf,我阅读了文档 我觉得很好,那将是小菜一碟。 我看一看名为bucket的现有查询变量: buckets() |> filter(fn: (r) => r.name !~ /^_/) |> rename(columns: {name: "_value"}) |> keep(columns: ["_value"]) 它返回以下数据: #group,false,false,false #datatype,string,long

我阅读了文档
我觉得很好,那将是小菜一碟。
我看一看名为
bucket
的现有查询变量:

buckets()
  |> filter(fn: (r) => r.name !~ /^_/)
  |> rename(columns: {name: "_value"})
  |> keep(columns: ["_value"])
它返回以下数据:

#group,false,false,false
#datatype,string,long,string
#default,_result,,
,result,table,_value
,,0,pool
,,0,test
#group,false,false,false
#datatype,string,long,string
#default,_result,,
,result,table,_value
,,0,0x04ff4e0c05c0feacccf93251c52a78639e0abef4
,,0,0x201f1a58f31801dcd09dc75616fa40e07a70467f
,,0,0x80475710b08ef41f5361e07ad5a815eb3b11ed7b
,,0,0xa68a71f0529a864319082c2475cb4e495a5580fd
bucket
变量起作用,我可以在任何仪表板的单元格查询中将其称为
v.bucket

在这个示例的基础上,我创建了以下查询:

from(bucket: "pool")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r._measurement == "minerstat")
  |> keep(columns: ["account"])
  |> distinct(column: "account")
  |> keep(columns: ["_value"])
返回此数据的:

#group,false,false,false
#datatype,string,long,string
#default,_result,,
,result,table,_value
,,0,pool
,,0,test
#group,false,false,false
#datatype,string,long,string
#default,_result,,
,result,table,_value
,,0,0x04ff4e0c05c0feacccf93251c52a78639e0abef4
,,0,0x201f1a58f31801dcd09dc75616fa40e07a70467f
,,0,0x80475710b08ef41f5361e07ad5a815eb3b11ed7b
,,0,0xa68a71f0529a864319082c2475cb4e495a5580fd
我将其保存为名为
account
的查询变量
然后我在仪表板单元格查询中使用它,如下所示:

from(bucket: "pool")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "minerstat")
  |> filter(fn: (r) => r["account"] == v.account)
  |> filter(fn: (r) => r["_field"] == "currentHashrate" or r["_field"] == "hashrate")
  |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
  |> yield(name: "last")
但这不会返回任何数据。仪表板视图上account变量的下拉菜单为空。
如果我将上面的
v.account
替换为变量后面的查询返回的值之一:

from(bucket: "pool")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "minerstat")
  |> filter(fn: (r) => r["account"] == "0x04ff4e0c05c0feacccf93251c52a78639e0abef4")
  |> filter(fn: (r) => r["_field"] == "currentHashrate" or r["_field"] == "hashrate")
  |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
  |> yield(name: "last")
它按预期工作,并显示一个漂亮的图形

我错过了什么

解决方案:不能在变量定义内使用变量。
我替换了
start:v.timeRangeStart,stop:v.timeRangeStop


开始:-1d

在变量定义中:

from(bucket: "pool")
  |> range(start: -1d)
  |> filter(fn: (r) => r._measurement == "minerstat")
  |> keep(columns: ["account"])
  |> distinct(column: "account")
  |> keep(columns: ["_value"])

我不认为可以在变量中使用变量,因此可以在仪表板查询中使用的v.timeRangeStart之类的东西不能用于定义另一个仪表板变量

不过,您可以在range()调用中使用duration文本,比如-5d或-2h