3
3

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 5 years have passed since last update.

Kibana Canvasで時系列データを⽐較表⽰する

Posted at

はじめに

Kibana Canvas、使ってますか?使ってますよね。
Kibana Canvasの1画面に異なる期間のデータを描画したいなーって時、ありますよね。
完成イメージ
今週のデータと先週のデータを横並べにしたり。

KibanaのCustomize time rangeと同様の表示を、Canvasでもやりたいですよね。
というわけで、やりましょう。

ざっくりやること

  • Time filterにfilterGroup=でグループ名をつける
  • Elementにgroup=で同じグループ名をつける

今回のデータ

2週間分のランチデータです。1日分はこんな感じ。

   {
        "_index" : "lunch",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "id" : 1,
          "menu" : "おにぎり",
          "date" : "2020-02-03T12:00:00+0900"
    }

やること

事前準備

CanvasのWorkPadをつくっておく。

Time filterをつくる

まず今週用と先週用でTime filterを2つ作ります。
Add element>Time filterをぽち。
作成したelementを選択して、右下の>Expression editorでみると、こう。

timefilterControl compact=true column=@timestamp
| render

右側のSelected element>Display>Time filter横の+マーク>Filter group>Filter groupをぽち。
ここにグループ名を、今回はthis_weekと入れSetをぽち。

同じくSelected element>Display>Time filter>ColumnにTime filterで利用するColumn名を、今回はdateと入れSetをぽち。
Expression editorでみると、こう。

timefilterControl compact=true column="date" filterGroup="this_week"
| render

columnの値が変更され、filterGroupが追加された今週用のTime Filterが完成しました。
先週用のTime filterは、同じ手順でfilterGroup="last_week"として作成します。

Data tableをつくる

続いて今週用と先週用でData tableを2つ作ります。
Add element>Data tableをぽち。
Expression editorでみると、こう。

filters
| demodata
| table
| render

デモデータを描画するようになっているので、データ元を変更します。
Add element>Data table>Demo Data>Elasticsearch raw documentをぽち。

  • index
  • fields

を選択します。
今回は下のように設定します。

filters
| esdocs index="lunch*" fields="date, menu"
| table
| render

groupの設定をしたいのですが、Selected elementでは設定出来ないので、Expression editorで直書きします。

filters group="this_week"
| esdocs index="lunch*" fields="date, menu"
| table
| render

先週用のData tableはgroup="last_week"にして作成します。
Time filterの日付を今週と先週に合わせて、画面をRefreshしたら出来上がり。

手順イメージ

左が今週、右が先週のデータが描画できました。

おわりに

  • Kibana Canvasかわいいね!Kibana Canvasいいね!という人が増えますように:pray:
  • 他の人の作ったCanvasが見たい:pray:
  • Canvas function referenceはいいぞ。
  • :sushi:たべたい。

おまけ

出来上がりイメージで使っていた小技一覧

  • 寿司→:sushi:変換:mapColumn
  • 日付のフォーマット指定:mapColumn
  • date→日付、menu→メニュー変換:alterColumn
  • getCellは便利
filters group="last_week"
| esdocs index="lunch*" fields="date, menu"
| mapColumn "date" fn={getCell date | formatdate "YYYY/MM/DD"} 
| mapColumn name="menu" expression={if {getCell "menu" | eq 寿司} then="🍣" else={getCell "menu"}}
| alterColumn column="date" name="日付"
| alterColumn column="menu" name="メニュー"
| table paginate=false
  font={font family="メイリオ','Open Sans', Helvetica, Arial, sans-serif" size=14 align="left" color="#FFFFFF" weight="normal" underline=false italic=false}
| render

参考

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?