0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Grafana + InfluxDBで可視化を行うのならInfluxQLよりもFluxをおすすめする理由

Last updated at Posted at 2022-08-25

2022年10月に、 InfluxDB IOx として発表され、2023年5月現在 InfluxDB Cloud Serverless としてサービスが提供されているバージョンの InfluxDB では、SQLクエリのネイティブサポートが実装されているため、新たなクエリ言語(Flux)を覚えるりよも単純に SQL のクエリで pivot を実施すれば良くなりました。
このため、この記事の内容は今後不要になる可能性があります。

ただし、Grafana などを利用している場合に Flux が必要になる場合がまだありますので、当面の間記事は公開したままにしておきます。

この記事の想定読者

  • InfluxDB の基本概念は知っている。
  • (Optional) InfluxQL を使って Grafana で可視化をしたことがある。

はじめに — なぜFluxを使うべきか?

InfluxDB + Grafana の組み合わせは時系列データを用いた各種の可視化でポピュラーな組み合わせかと思いますが、Grafana側がどちらかというとまだ InfluxQL をデフォルトのクエリ言語として利用することを想定している(ように見える)こともあり、InfluxQL を使ってクエリを書いている人が多いのではないかと思います。

しかし、InfluxDB が現在推している新しいクエリ言語 Flux を使うほうが高度な可視化が(容易に)可能になります:

  • Fluxには pivot() 機能があり、テーブルの行列の入れ替えが可能。これにより InfluxQL ではできなかった種類の可視化が可能になる。
  • pivot() を活用すると、InfluxDBの tagfield をほぼ等価に使える。例えば field を使って group() 関数でグループ化するような処理が可能。
  • Fluxではクエリの結果として得られる Stream of Tables を変数として保存し、再利用することが容易にできる。

GrafanaでFluxクエリを使うための最初の一歩 — Field をテーブルの列(column)に変換する

Fluxでクエリをかけると最初すべての Field が別々の行(row)として出力されるので面食らうと思います。
FieldTable の列に変換する場合は pivot() 関数を使って以下のような感じでクエリを書きます。

from(bucket: "${bucket}")
|> range(start: v.timeRangeStart, stop:v.timeRangeStop)
|> filter(fn: (r) =>
  r._measurement == "${measurement}"
)
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
|> group()

要するにタイムスタンプが同じ Field のレコード(行として表現される)をまとめて列に変換します。
捕捉:この例では、Bucketの名前と、Measurementの名前はGrafanaの変数として保存されていると想定しています。

ここまでは、InfluxQL のほうが Flux よりも簡単ですので、シンプルなクエリを行うだけなら InfluxQL を使うほうが良いかもしれません。

動作確認をした環境

2022-08-25時点の以下の環境

  • InfluxDB Cloud v2.0
  • Grafana Cloud v9.1.0-76166 (7002c1100)
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?