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

**URL:** https://discuss.elastic.co/t/kibana-visualize/220751
**Category:** 日本語による質問・議論はこちら
**Created:** [February 25, 2020, 1:59am UTC](https://discuss.elastic.co/t/kibana-visualize/220751 "2020-02-25T01:59:30Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![harue](https://avatars.discourse-cdn.com/v4/letter/h/82dd89/32.png) [@harue](https://discuss.elastic.co/u/harue)
#### Post date: [February 25, 2020, 1:59am UTC](https://discuss.elastic.co/t/kibana-visualize/220751/1 "2020-02-25T01:59:30Z")

</div>

お世話になります。

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

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

▼作成イメージ  
 ![1](https://us1.discourse-cdn.com/elastic/original/3X/9/4/94b8d1a08f1745768d3f1774f07a20637f62b504.png)

例）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にて、月間の時間別の合計数を表すグラフを作成することは可能でしょうか？  
有識者の方は回答を頂けますと幸いです。

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

---

<div class="post-metadata">

### Author: ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)
#### Post date: [February 25, 2020, 4:33am UTC](https://discuss.elastic.co/t/kibana-visualize/220751/2 "2020-02-25T04:33:47Z")

</div>

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

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

| 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とします）を使えば、期待するような縦棒のグラフを作ることができるかと思います。

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/1/9/191dc00b234326485a198924dd90e44479fedea8.png)

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

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

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

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

```

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/4/4/448372f74c07ffd09815381701c2d719fb8f9b7d.png)

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

> [@Data型データに対して、特定時間帯を検索する方法について](https://discuss.elastic.co/t/data/81792):
>
> 夜間（22:00-06:00）や昼間（08:00-17:00）などのように、時間帯を絞った毎日の検索をしたうえで各種グラフを作成を考えております。 毎日の全時間帯を集約したグラフはよく話題に上がりますが、毎日の特定時間帯だけをグラフにしたいです。 Cut&Try繰り返しても、うまくいかず。 皆様のお知恵を貸してください。 登録するIndexは一種類。logstash-yyyy-MM-dd などのように、時間ごとのindex作成はしない構成。 下記のmappingを登録。 "mappings" : { "my\_index" : { "properties" : { "Time" : { "type" : "date", "format" : "yyyy-MM-dd HH:mm:ss" }, "count" : { "type" : "integer" } Kibana上部の検索窓で、date型のTimeに対して、下記のようなqueryをするイメージで試しました。 Time:["\* 22:00:00" TO "\* 06:00:00"] しかし、date型…

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

---

<div class="post-metadata">

### Author: ![harue](https://avatars.discourse-cdn.com/v4/letter/h/82dd89/32.png) [@harue](https://discuss.elastic.co/u/harue)
#### Post date: [March 2, 2020, 7:26am UTC](https://discuss.elastic.co/t/kibana-visualize/220751/3 "2020-03-02T07:26:11Z")

</div>

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

日付項目から時間に相当する部分の抽出を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のフィルターを使用してグラフを作成できました。

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

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [March 30, 2020, 7:26am UTC](https://discuss.elastic.co/t/kibana-visualize/220751/4 "2020-03-30T07:26:11Z")

</div>

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