家計簿アプリZaimデータの分析・可視化基盤でのKibanaを使った分析例

この記事のまとめ:
背景

私自身Kibana初心者ではじめはどのように描画するのかすらわからない状態で手探りで描画方法を試したのですが、いくつかサンプルがあるとはじめて使う方でも簡単に理解ができるのではないかと思いますので、私が描画しているグラフの一例を紹介します。

Visualize

Visualizeは必要な項目を選択するだけで描画ができ非常に便利でシンプルなツールです。KibanaのVisualizeの機能の中から私が表示している一例を紹介します。

分類毎の積み上げグラフ

毎月の分類毎の出費を積み上げて表示します。 毎月の出費が一目瞭然です。

設定例

  • Filter: “payment”
  • Dataタブ
    • Y-Axis
      • Aggregation: Sum
      • Field: amount
    • X-Axis
      • Aggregation: Date Histogram
      • Field: date
      • Interval: Monthly
    • Split Series
      • Sub Aggregation: Terms
      • Field: category.keyword
      • Order By: metric: Sum of amount
      • Order: Descending
      • Size: <必要な項目数>
各年の分類毎の割合

1年間の合計出費額を100%ととしたときの分類毎の割合を表示します。 出費割合が一目瞭然となりどの分類に消費しているか明確化できます。

設定例

  • Filter: “payment” (私はその他にも計算に含めたくない分類も削っています)
  • Dataタブ
    • Y-Axis
      • Aggregation: Sum
      • Field: amount
    • X-Axis
      • Aggregation: Date Histogram
      • Field: date
      • Interval: Yearly
    • Split Series
      • Sub Aggregation: Terms
      • Field: category.keyword
      • Order By: metric: Sum of amount
      • Order: Descending
      • Size: <必要な項目数>
特定ジャンルの1年間の合計出費

医療費控除を受ける額を超えているかなどを明確化するために使っています。

設定例

  • Filter: genre: <特定ジャンル>、year: <特定年>
  • Dataタブ
    • Metric
      • Aggregation: Sum
      • Field: amount
  • Optionタブ
    • Range: <特定範囲>
Timelion

TimelionはVisualizeではできない複数グラフの表示や加減算をすることができ、より複雑なことができます。 Timelionを使用して私が表示している一例を紹介します。

毎月の収支と特定期間の収支合計

毎月の収支、毎月の収支合計、期間内(過去1年など)の収支合計を表示することで全体としてプラス傾向なのかマイナス傾向なのかが一目瞭然になります。

Timelionはちょっとした関数を駆使してデータの描画を行います。なかなかはじめは何を書いているのかわかりずらいですが、Excelの関数のようなものなので慣れればいろいろな表現方法ができます。

設定例

.es(
   timefield=date, 
   metric=sum:amount, 
   q='payment_income:income'
).bars(stack=NULL).label('総収入'), 
 
.static(0).subtract(
  .es(
    timefield=date, 
    metric=sum:amount, 
    q='payment_income:payment'
  )
).bars().label('総支出'), 
 
.es(
  timefield=date, 
  metric=sum:amount,
  q='payment_income:income'
).subtract(
  .es(
    timefield=date, 
    metric=sum:amount, 
    q='payment_income:payment'
  )
).label('総収支'),
 
.cusum(
  .es(
    timefield=date, 
    metric=sum:amount,
    q='payment_income:income'
  ).subtract(
    .es(
      timefield=date, 
      metric=sum:amount, 
      q='payment_income:payment'
    )
  )
).label('合算総収支')

こういった項目をまとめてダッシュボードに登録しておけばあなたの家計も一目瞭然になるのではないでしょうか?

一度お試しあれ。


今回は以上です。 最後まで読んでいただき、ありがとうございます。
関連記事



コメント

このブログの人気の投稿

ネットワーク越しの RTL-SDR で SDR# を使う方法

LinuxでのnVidia GPUのオーバークロック・電力チューニング方法