KibanaのVisualizeで想定通りの出力ができずに困っています。
以下のようなデータがElasticsearchに入っているとします。
ユーザ名 | 入退室 | 時刻 |
---|---|---|
ユーザ1 | 入室 | 2020-06-23 10:45:08 |
ユーザ2 | 入室 | 2020-06-23 11:44:08 |
ユーザ3 | 入室 | 2020-06-23 11:50:00 |
ユーザ2 | 退室 | 2020-06-23 18:45:08 |
Kibanaを用いて、上記のデータから「現在入室中であるユーザ」を可視化したいと思っています。
ロジックとしては、
1)ユーザ名でグループ化し、その中で時刻が最大であるものを抽出
2)上記1)に対し、入退室:入室であるレコードを抽出
残ったものが「現在入室中であるユーザ」
このロジックでkibanaを使い可視化したいと思っているのですが、うまくいきません。
端的には、
1)の評価結果に対して2)のフィルタがかからず、2)のフィルタが想定より早いタイミングで実行される
状況です。
kibanaのVisualize⇒Data Tableを使用する前提で、
■Metrics
Aggregation:Max フィールド:時刻
■Buckets
Split rows ⇒
Aggregation:Terms フィールド:ユーザ名
とすると、
ユーザ名 | 入退室 | 時刻 |
---|---|---|
ユーザ1 | 入室 | 2020-06-23 10:45:08 |
ユーザ3 | 入室 | 2020-06-23 11:50:00 |
ユーザ2 | 退室 | 2020-06-23 18:45:08 |
の結果**(A)**が得られます。ここまでは想定どおりで、1)の結果が得られています。
この(A)に対し2)のフィルタをかける方法をご教示いただきたく。
<やりたいこと>
上記から"入退室":"入室" でフィルタして
ユーザ名 | 入退室 | 時刻 |
---|---|---|
ユーザ1 | 入室 | 2020-06-23 10:45:08 |
ユーザ3 | 入室 | 2020-06-23 11:50:00 |
⇒ユーザ1およびユーザ3が入室中であるとわかる
<試したこと>
画面上部の「+Add Filter」にて「"入退室":"入室"」のフィルタ条件をかける
ユーザ名 | 入退室 | 時刻 |
---|---|---|
ユーザ1 | 入室 | 2020-06-23 10:45:08 |
ユーザ2 | 入室 | 2020-06-23 11:44:08 |
ユーザ3 | 入室 | 2020-06-23 11:50:00 |
となってしまいます。
「入退室:入室」のフィルタが(A)に対してかかるのではなく
まず「入退室:入室」のフィルタが元データに対してかかり、その結果を
■Metrics
Aggregation:Max フィールド:時刻
■Buckets
Split rows ⇒
Aggregation:Terms フィールド:ユーザ名
の条件で集計しているように見えます。
<有識者の方に教えていただきたいこと>
- (A)の結果に対して「入退室:入室」のフィルタ条件をかける方法、
もしくは
- 上記の要件を満たす別のロジックや方法の提案
について ご教示いただけますと幸甚です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/09 13:53