0

ドキュメントhttps://docs.influxdata.com/influxdb/v2.0/visualize-data/variables/
を読みました 。
という名前の既存のクエリ変数を見てみましょう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

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,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")

しかし、これはデータを返しません。また、ダッシュボード ビューのアカウント変数のドロップダウン メニューは空です。上記を、変数の背後にあるクエリによって返された値の 1 つ
に置き換えると、次のようになります。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"])
4

1 に答える 1

1

変数内で変数を使用できるとは思わないため、ダッシュボード クエリで使用できる v.timeRangeStart などを使用して別のダッシュボード変数を定義することはできません。

ただし、 range() 呼び出しで -5d や -2h などの期間リテラルを使用できます。

于 2021-04-10T20:44:59.157 に答える