はじめに
データ分析にあたってどんなデータなのかを可視化してみることが第一歩になります。また、モニタリングすべき数値があれば、リアルタイムに、誰でも見れる状態にしておくことが理想です。これらのために、BI(ビジネスインテリジェンス)やダッシュボードツールが存在します。
一般に使われる製品としては、セールスフォース社のTableauやマイクロソフト社のPowerBiがあります。しかし、個人で利用するには少々お高め。。。
無料のものとして、RedashやMetabaseがあります。
今回は、Metabaseを使って、delika等で取得できるCSVデータを可視化してみます。標準機能では、DB接続のみですが、アドオンのツールを使ってCSVで読み込めるようにします。
要件
- 前提:Metabaseが稼働している
- CSVデータを読み込み、可視化(グラフ化)する
Metabaseについて
無料で使えるダッシュボードツールです。いわゆる、ローコード開発が可能で、SQLを知らなくても、データを抽出し、集計できるようになっています。もちろんSQLを書くことも可能です。
MySQLやPostgreSQL、SQLiteなどのオープンソースのデータベース、OracleやSQLServerのDB製品、Redshift(AWS)とBigQuery(GCP)のクラウドサービス、など多様なデータソースに対応しています。
ただ、惜しいことにCSVやエクセルファイルなどには標準では対応しておりません。
公式サイト:https://www.metabase.com/
※インストール方法はJavaを使う方法、Dockerを使う方法があります。Documents内のInstallを参照ください。
実装方法
csv-metabase-driverをインストール!で完了します。簡単ですね。プラグインとして、CSVを読み込めるようなドライバーを作ってくれている人がいます。
- 下記、GithubのREADMEを開く
https://github.com/Markenson/csv-metabase-driver - ページ中程Installation内の「this file」をダウンロード
- metabase.jarが格納されているフォルダ内の「plugins」フォルダ内にダウンロードした「csv.metabase-driver.jar」を格納
- Metabaseの再起動
使用方法
- 表示名:CSVファイル名
- Directory:CSVファイルが格納されているフォルダパス
- Separator:「,」カンマ区切りや「\t」タブ区切りなど
- Charset:UTF-8やShiftJISなど文字コード
落とし穴
CSV読み込めたとおもったら、なんとすべて文字列になっていて、集計ができませんでした。。。色々調べてみたら、下記②の方法で解決しました。
試したこと①:データソース設定のAdvanced
下記、解決済みのIssueを見ると、AdvancedにColumnTypeを設定できることを見つけました。実際に、設定値に追加してみました。
&columnTypes=String,Date,Integer,Integer,String,String,Integer&dateFormat=yyyy-MM-dd-MM
結果はうまくいかず。。。結局文字列のままでした。
試したこと②:テーブルの詳細設定
Metabaseを触っていると「テーブルの設定」ができることがわかりました。(下記画像の本のマーク)
遷移後、「このテーブルのフィールド」を押すと、フィールドタイプを選択できましたので、それっぽいものを設定してみました。
すると、Created Atが日付になり、Page Views Countが数値になったので、日別PV数のグラフを作ることが可能になりました。
まとめ
元々MetabaseでCSVデータを参照したいと思ったきっかけは、DynamoDBのデータをCSVでダウンロードした後に、簡単に分析できないかなと思ったときでした。DynamoDBに入れているのに、SQLiteに入れ直すのもなーと思い、今使っているダッシュボードであるMetabaseに入れたいと思い、調べてみました。フィールドのところで詰まりましたが、なんとか読み込みに成功しました。