Kibana Visualizeにて月間の時間別合計数を表示する方法

お世話になります。

KibanaのVisualizeの Vertical bar chartについて質問させて頂きます。

▼実現したいこと
・月間の時間別の合計数を表す縦棒グラフを作成

▼作成イメージ
1

例)indexの項目
日付(yyyy/MM/dd HH: mm:ss) アクセス数

2020/02/01 10:00:00 10
2020/02/01 11:00:00 20
2020/02/02 10:00:00 10
2020/02/02 11:00:00 20

→この場合「10時は20件、11時は40件」と表示

Vertical bar charにて、月間の時間別の合計数を表すグラフを作成することは可能でしょうか?
有識者の方は回答を頂けますと幸いです。

お手数ですが、宜しくお願い致します。

日付項目から時間に相当する部分を抽出したフィールドを持っておけば可能かと思います。

イメージとしてはこのようになります。

datetime アクセス数 時(このフィールドを新設する)
2020/02/01 10:00:00 10 10
2020/02/01 11:00:00 20 11
2020/02/02 10:00:00 10 10
2020/02/02 11:00:00 20 11

新たに作成したフィールド(hourとします)を使えば、期待するような縦棒のグラフを作ることができるかと思います。

次に、hourフィールドをどう作るか、というところです。
データ投入時にhour部分を算出し、設定できるのが一番望ましいかと思います。

今回は便宜的に、日付・時間を格納した@timestampから、ScriptedFieldでhourというフィールドを作成し、そこに時間に相当する数値を入れました。
上のグラフは、そこで作成したhourフィールドをX軸で使っています。

Scripted Fieldの設定は以下のようにしました。

def dt = doc['@timestamp'].value; 
//@timestampはUTCで入れたため、日本時間用にするため9時間プラスした
return dt.getHour() + 9; 

過去類似の質問としては、こちらになるでしょうか。

ご参考になれば幸いです。

返信が遅くなり申し訳ありません。

日付項目から時間に相当する部分の抽出をingest nodeで実現できました。

▼抜粋

{
  "script": {
"lang": "painless",
"source": """def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); def calendar = Calendar.getInstance(); calendar.setTime(df.parse(ctx['@timestamp']));  ctx.time = calendar.get(Calendar.HOUR_OF_DAY);"""
  }
},

またvisualizeのフィルターを使用してグラフを作成できました。

回答頂きありがとうございました。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.