LoginSignup
5
2

More than 3 years have passed since last update.

Kibanaの「Data Table」に同一フィールドの集計結果を異なる条件ごとに横一列に並べたい。

Last updated at Posted at 2019-06-06

目的

Kibanaの「Data Table」に同一フィールドの集計結果を異なる条件ごとに横一列に並べたい。

具体的には以下のように、商品ごとに購入回数を表示するテーブルを作りたい

C7.PNG

ログの構造

ユーザーの商品購入を考える

ユーザーがとあるお店で、商品を購入したと想定
東スーパー、西コンビニ、南商店、北デパートと4つのお店が存在し、以下の商品を購入

商品名 単価
キノコの山 120円
コアラのマーチ 92円
杉のこ村 111円
たけのこの里 140円
ハーゲンダッツ 1000円

Kibanaでこの商品名ごとに購入回数を表示したい。

ログはjson形式で登録されており以下のような構造になっている。

ユーザーがお店に行ったら作られるログ

{"user_id": 52, "kind_name": "アクセス", "place": "北デパート", "@timestamp": "2019-06-13T19:55:23+09:00:00"}

ユーザーが購入したら作られるログ

{"user_id": 43, "kind_name": "購入", "price": 140, "place": "南商店", "total_price": 280, "total_price_with_tax": 302.4, "product": "たけのこの里", "p_value": 2, "@timestamp": "2019-06-29T05:42:17+09:00:00"}

今回は2019/6/1~2019/6/3までの"kind_name": "購入"ログの数をproductごとに表示させたい。

KibanaのData Tableで商品別に購入回数を表示手順

集計値を1日ごとにまとめる

C2.PNG

Bucketsを編集し、AggregationにDate Histogramを選択、
Fieldに@timestampを選択、IntervalにDaily選択。

C3.PNG

購入数を商品ごとに表示させる

たけのこの里の購入回数を表示

C4.PNG

Metricsに新規Metricを追加。Filtersで絞込条件を指定したいので、Aggregationは
Average BucketMax BucketMin BucketSum Bucketの中から適当に選択 1

C5.PNG

ログの数が1日ごとにカウントされている。

Date Histogramで時系列データをグループ化する。
Dailyで、1日単位でグループ化する。HourlyMinuteを選択すれば、1時間単位や、1分単位でグループ化できる。

BucketのSub AggregationでFilters選択し、Filter1に選択条件を入れる
たけのこの里の購入数回数を表示させたいので、product.keyword:たけのこの里といれて条件を絞る
MetricのAggregationはCountを選択
C6.PNG

ほかの商品も同じように設定をすれば、商品ごとの購入回数をKibanaのData Tableで表示できる

おわりに

Add a filter でログ全体を絞る方法は知っていたが、項目ごとに絞る方法がよくわからなかったので、今回画像付きで手順を書いてみた。


  1. Average BucketMax BucketMin BucketSum Bucketは、検索結果を指定した条件に分類し、平均値、最大値、最小値、合計値を取得するが、Filtersで検索条件が1つの場合、結果は1つなので平均値、最大値、最小値、合計値どれをもとめても、同じ値になる。 

5
2
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
5
2