データ可視化ツールの Metabase で国債金利の推移をグラフ化してみる

Posted on

データ可視化ツールの Metabase が話題になっていたので、Redash との比較を兼ねて試してみました。

macOS の場合はローカル版が用意されているので、Redash よりも簡単に始めることができました。今回の記事でもこのローカル版で検証しています。

国債金利の CSV データ

今回は手頃なデータとして、財務省が公開している国債金利の推移を可視化してみます。 1974 年からの日時データで約 11,000 件あります。元データとなる CSV ファイルは財務省のサイトからダウンロードできます。

CSV の生データは扱いにくい和暦表記になっているので、Google スプレッドシートで和暦から西暦に変換しました。また、データが多いとグラフのレンダリングが遅くなるので今回は 3 カラムに減らしました。最終的に整形した CSV データはこんな感じです。

$ head -n 5 jgbs_rate.csv
基準日,3年,5年,10年
1974/09/24,8.83,8.348,
1974/09/25,8.831,8.348,
1974/09/26,8.832,8.348,
1974/09/27,8.833,8.349,

$ tail -n 5 jgbs_rate.csv
2017/12/25,0.124,0.11,0.036
2017/12/26,0.121,0.104,0.041
2017/12/27,0.118,0.1,0.052
2017/12/28,0.115,0.1,0.052
2017/12/29,0.115,0.104,0.047

PostgreSQL にインポートする

Metabase は RDBMS の MySQL や PostgreSQL、DWH の Redshift や BigQuery などメジャーなデータベースをサポートしています。公式サイトには 13 のデータベースが挙げられていますが、今回は自分が好きな PostgreSQL を使います。

整形した CSV ファイルを PostgreSQL の COPY コマンドでインポートします。

create table jgbs_rate(
    date date,
    years_3 numeric,
    years_5 numeric,
    years_10 numeric
);

# \d jgbs_rate
              Table "public.jgbs_rate"
  Column  |  Type   | Collation | Nullable | Default
----------+---------+-----------+----------+---------
 date     | date    |           |          |
 years_3  | numeric |           |          |
 years_5  | numeric |           |          |
 years_10 | numeric |           |          |

# copy jgbs_rate from '/tmp/jgbs_rate.csv' with (format csv, header true);
COPY 11177

# select * from jgbs_rate order by date limit 5;
    date    | years_3 | years_5 | years_10
------------+---------+---------+----------
 1974-09-24 |    8.83 |   8.348 |
 1974-09-25 |   8.831 |   8.348 |
 1974-09-26 |   8.832 |   8.348 |
 1974-09-27 |   8.833 |   8.349 |
 1974-09-28 |   8.834 |   8.349 |
(5 rows)

Metabase で可視化してみる

Metabase を起動すると最初にセットアップ画面が開くので、アカウント情報やデータベースの設定などを行います。画面の指示に従うだけなので詳細はスキップします。

先ほど PostgreSQL にインポートしたデータを可視化するには、上部のメニューから [New Question] → [Custom] を選びます。 SQL をわざわざ書かなくても、簡単な where 句や group by 句は GUI だけで指定できます。

直近 5 年間の国債金利の推移を可視化したのが次のグラフです。

直近 5 年間の国債金利の推移

2016 年 1 月に日銀がマイナス金利政策を発表した瞬間に長期国債である 10 年金利が急落しているのがハッキリとわかりますね。

このグラフを生成するのに SQL は一切書いておらず、すべて GUI だけで操作できました。このあたりの思想は Redash と大きく異なります。

もちろん実行された SQL も確認できます。上のグラフで実行されたクエリはこんな感じ(インデントは整えました)。

SELECT
  "public"."jgbs_rate"."date" AS "date",
  "public"."jgbs_rate"."years_10" AS "years_10",
  "public"."jgbs_rate"."years_3" AS "years_3",
  "public"."jgbs_rate"."years_5" AS "years_5"
FROM
  "public"."jgbs_rate"
WHERE
  CAST("public"."jgbs_rate"."date" AS date) BETWEEN CAST(? AS date) AND CAST(? AS date)
LIMIT
  2000

Redash との比較

仕事では Redash を使っているので、ユーザー目線で Metabase と Redash を比較してみました。

pros

  • UI は Metabase の方がモダン
  • SQL が書けない人でも GUI だけである程度の分析や可視化ができる
    • SQL を書くのが苦じゃない人は Redash の方が向いてそう
  • グラフの種類が多い

cons

  • PostgreSQL と Redshift など異なる Data Source の JOIN はできない
  • 対応する Data Source が少ない
    • Redash は大規模データ分析でよく使う Athena や Hive に対応している

まとめ

Metabase の GitHub には次のようなコンセプトが書かれています。

The simplest, fastest way to get business intelligence and analytics to everyone in your company.

この言葉からもわかるように、Redash とは違うコンセプトで開発された OSS です。この記事を書いている時点でまだ v0.27.2 なので、今後も開発状況をウォッチしたいと思います。