# イベントとイベントの間隔をKibanaでグラフ化したい

**URL:** <https://discuss.elastic.co/t/kibana/187126>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [June 24, 2019, 12:42pm UTC](https://discuss.elastic.co/t/kibana/187126 "2019-06-24T12:42:15Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![GeneA](https://avatars.discourse-cdn.com/v4/letter/g/96bed5/32.png) [@GeneA](https://discuss.elastic.co/u/GeneA)\
**Post date:** [June 24, 2019, 12:42pm UTC](https://discuss.elastic.co/t/kibana/187126/1 "2019-06-24T12:42:15Z")

</div>

はじめまして。

ある人の行動パターンについて「時間＋イベント」という形でelasticsearchにデータがインデックスされているとします。このデータを用いて  
・睡眠時間(就寝と起床の時間の差)  
・就業時間(職場着と退社の時間の差)  
等、イベントとイベントの時間の差をグラフ化する事はできるでしょうか。  
もし出来るとしたら、どのような方法で実現できるでしょうか。  
timelionの式で実現できるのか、Visual Builderで実現できるのか、等、どのような「ワザ」を使えば実現できそうか教えて頂けると嬉しいです。

インデックスされているデータのイメージは以下の通りです。  
date time event(ja) Comment  
2019/6/1 22:00 就寝  
2019/6/2 7:00 起床  
2019/6/2 7:20 職場へ出発  
2019/6/2 8:20 職場着  
2019/6/2 17:20 退社  
2019/6/2 18:20 帰宅  
2019/6/2 22:00 就寝  
2019/6/3 7:00 起床 休日  
2019/6/3 22:00 就寝  
2019/6/4 7:00 起床  
2019/6/4 7:20 職場へ出発  
2019/6/4 8:20 職場着  
2019/6/4 17:20 退社  
2019/6/5 8:20 職場着 飲み明かしてそのまま出勤  
2019/6/5 17:20 退社  
2019/6/5 18:20 帰宅  
2019/6/6 18:20 就寝  
2019/6/7 3:20 起床

一日に発生するイベントはいつも同じとは限りません。ちなみにデータをご覧になるとわかるかと思いますが、この人は就業しない日があります。

Kibanaはバージョン7.0.1をWindows7上で動かしています。  
何かアドバイスいただけると助かります。

宜しくお願いいたします。

---

<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:** [June 24, 2019, 1:57pm UTC](https://discuss.elastic.co/t/kibana/187126/2 "2019-06-24T13:57:21Z")

</div>

こんにちわ

イベントのデータをElasticsaerchに取り込むとき、終了ー開始で期間を求めておく、というのはどうでしょうか？

Logsatshのelasticsearch filterの説明で、提示いただいているような内容が例で説明されています。[https://www.elastic.co/guide/en/logstash/current/plugins-filters-elasticsearch.html](https://www.elastic.co/guide/en/logstash/current/plugins-filters-elasticsearch.html)

頂いたデータを以下のような構造にしておけば、  
起床（睡眠イベントの終了）がきたら、開始に相当するものを探して、終了時間ー開始時間で期間を求めることができます。

| No | datetime | kind | event\_type | comment | duration |
| --- | --- | --- | --- | --- | --- |
| 1 | 2019/6/1 22:00 | 睡眠 | 開始 | 就寝 | ---- |
| 2 | 2019/6/2 07:00 | 睡眠 | 終了 | 起床 | ＜ここをfilterで求めておく＞ |
| 3 | 2019/6/2 07:20 | 移動 | 開始 | 職場へ出発 | ---- |
| 4 | 2019/6/2 08:20 | 移動 | 終了 | 職場着 | ＜ここをfilterで求めておく＞ |

あとは、この求めた数値データをグラフ上で表示させてやれば良いということになるのではないでしょうか？

---

<div class="post-metadata">

**Author:** ![GeneA](https://avatars.discourse-cdn.com/v4/letter/g/96bed5/32.png) [@GeneA](https://discuss.elastic.co/u/GeneA)\
**Post date:** [June 25, 2019, 4:26am UTC](https://discuss.elastic.co/t/kibana/187126/3 "2019-06-25T04:26:05Z")

</div>

アドバイスありがとうございます。

最初に書いておけばよかったのですが、グラフ化したいイベント２種類の間隔は何を指定するかはわからないのが前提です。そのため、event\_typeが開始から開始、終了から終了となっているイベントの間隔をグラフ化する可能性があります。

また、今後イベント自体が一瞬で終わってしまうため、開始終了という意味を持たせにくいもデータを追加する可能性もあります。

timelionの式をうまく駆使するなどして、なるべくデータに項目追加せずにKibanaで対象データを絞り込んでグラフ化できればいいのですが、仰る通り前に発生したイベントに関する情報を次のデータに入れて置く以外に手がないような気もしています。

logstashのfilter使って全てのイベントのデータに直前のイベントとの差を追加する事で何とかできるかもしれません。

本件に関してまた何かアイディアありましたらReply頂けると助かります。  
いろいろ試してみます。  
ありがとうございました。

---

<div class="post-metadata">

**Author:** ![GeneA](https://avatars.discourse-cdn.com/v4/letter/g/96bed5/32.png) [@GeneA](https://discuss.elastic.co/u/GeneA)\
**Post date:** [June 27, 2019, 8:43am UTC](https://discuss.elastic.co/t/kibana/187126/4 "2019-06-27T08:43:07Z")

</div>

その後いろいろdisucussionの投稿を探し回ってみましたが、似たような質問をされた方がいらっしゃいました。

やはりデータ（ドキュメント）を跨ぐような情報を元に計算した結果を  
Kibanaでグラフ化するには、インデックス時にイベント発生終了時間を追加する等の工夫が必要そうです。

> [@Kibana4でのデータの計算と可視化について](https://discuss.elastic.co/t/kibana4/33131):
>
> こんにちは。 elasticserchに格納したデータをkibana4で可視化しようと試みている者なのですが。 以下の要素でデータを格納している場合に、 datetime, user, task\_id, status 以下の様なデータが格納されているとして、 2015/10/28 10:10:10, "test\_user1", "task\_1", "task\_begin" 2015/10/28 10:15:10, "test\_user1", "task\_1", "task\_finish" 2015/10/28 10:20:10, "test\_user2", "task\_2", "task\_begin" 2015/10/28 10:25:10, "test\_user1", "task\_3", "task\_begin" 2015/10/28 11:30:10, "test\_user2", "task\_2", "task\_finish" 2015/10/28 12:35:10, "test\_user1", "task\_3", "task\_finish" task\_id毎…

> [@KPIs based on events in time](https://discuss.elastic.co/t/kpis-based-on-events-in-time/88028):
>
> Hi, I want to display KPIs based on event intervals, e.g. average time between event A and event B per user average amount of event C in time per user I struggle to figure out what is the best way to make this with Kibana, anyone has some ideas or documentation on how to achieve this? Thanks, Stefan

---

<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:** [July 25, 2019, 8:43am UTC](https://discuss.elastic.co/t/kibana/187126/5 "2019-07-25T08:43:19Z")

</div>

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