如何在 InfluxDB 2.0 仪表板上获取查询变量?
How to get a query variable on InfluxDB 2.0 dashboard?
我阅读了文档https://docs.influxdata.com/influxdb/v2.0/visualize-data/variables/
我认为太棒了,这将是小菜一碟。
我看一下名为 bucket
:
的现有查询变量
buckets()
|> filter(fn: (r) => r.name !~ /^_/)
|> rename(columns: {name: "_value"})
|> keep(columns: ["_value"])
它returns这个数据:
#group,false,false,false
#datatype,string,long,string
#default,_result,,
,result,table,_value
,,0,pool
,,0,test
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"])
那个returns这个数据:
#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")
但是这个returns没有数据。仪表板视图中帐户变量的下拉菜单为空。
如果我将上面的 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
与
start: -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() 调用中使用持续时间文字,例如 -5d 或 -2h。
我阅读了文档https://docs.influxdata.com/influxdb/v2.0/visualize-data/variables/
我认为太棒了,这将是小菜一碟。
我看一下名为 bucket
:
buckets()
|> filter(fn: (r) => r.name !~ /^_/)
|> rename(columns: {name: "_value"})
|> keep(columns: ["_value"])
它returns这个数据:
#group,false,false,false
#datatype,string,long,string
#default,_result,,
,result,table,_value
,,0,pool
,,0,test
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"])
那个returns这个数据:
#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")
但是这个returns没有数据。仪表板视图中帐户变量的下拉菜单为空。
如果我将上面的 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
与
start: -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() 调用中使用持续时间文字,例如 -5d 或 -2h。