データ可視化ツールの 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 年間の国債金利の推移を可視化したのが次のグラフです。
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 なので、今後も開発状況をウォッチしたいと思います。