evidenceを使用したデータの可視化
はじめに
こんにちは! Rehab for JAPANでデータアナリストをしている迫田です。
現在、BIツールにはLooker Studio[1]やOSSのApache Superset[2]やLightDash[3]のように無料で操作も比較的容易に利用できるツールが増えています。
一方、データの接続や可視化が簡易的に行えるものの、グラフの細かなレイアウト調整や読み込むデータ量が増えることでグラフの表示が遅れるなどパフォーマンスが低下するなどの課題もあります。
また、Looker studioでパフォーマンスを上げる際の「データの抽出(extract data)」機能のデータ量の上限が100MB[4]であり、それを超えるデータを扱う際には別の方法を考える必要があります。
そこで、今回はこれらの課題に対応するために、ここ2-3年で紹介記事[5]の増えてきたevidence[6]というBIツールの利用についてまとめたいと思います。
ターゲット
- BIツールに興味のある方
- ダッシュボードをコードで管理したい方
evidenceとは
evidenceはMarkdownの形式でSQLや描画するグラフ内容を記述して、ドラッグ&ドロップ式のBIツールの代替となるBIツールです。
VSCodeの拡張機能によって、インストール自体は簡単に行うことができます。
How does Evidence work?
特徴
- データソースにはSQLだけでなく、CSVのような非SQLデータソースを含めることが可能。
- Markdownファイル内で実行されたクエリの実行結果をもとにグラフやチャートが作成される。
- Loops機能(forループのような機能)によって繰り返し処理が可能。
- データソースからParquetファイルでキャッシュ層に保存され、キャッシュ層に対してクエリを実行するため、データの読み込み速度が速い。
Introducing Universal SQL
セットアップ
今回はVSCode上で既存のdbtプロジェクトを利用して、evidenceをセットアップしていきます。
※dbt Cloudからは行えないそうです。また、既にdbtプロジェクトがあることを前提としています。
VSCodeの拡張機能のインストール
以下の拡張機能をVSCodeにインストールします。
dbtプロジェクト内にevidenceをセットアップ
dbtプロジェクトのフォルダへ移動し、reportsというフォルダにインストールすることによってmonorepo[7]として作成していきます。
cd path/to/your/dbt/project
npx degit evidence-dev/template reports
npm --prefix ./reports install
npm --prefix ./reports run sources
npm --prefix ./reports run dev
evidenceの起動
VSCode上で▶️Start Evidenceボタンをクリックすることで、evidenceが起動します。
デフォルトでは以下のようなページが表示されます。
データソースの設定
デフォルトでは、データソースがDuckDBとなっています。
http://localhost:3000/settings
へのアクセスもしくは、ダッシュボード右上の3点ボタンのSettingsのクリックによって設定画面にアクセスできます。
-
Datasource Typeにて任意のデータソースを選択
-
Source nameを任意の名前で入力し、Confirmをクリック
-
SOURCE OPTIONSの項目を入力し、Confirm Changesをクリック
接続が完了すると、VSCode上のreports/sourcesフォルダ内にSource nameで指定したフォルダが作成されます。
- 使用するデータソースの作成
今回はData Engineer Campのdbt-dimensional-modellingで作成したOne Big Tableを利用して可視化を行います。
/reports/sources
フォルダ内に以下のようなsqlファイルを作成し、データソースを作成します。
SELECT `使用カラム名` FROM `テーブル名`
ファイルを作成したら、以下を実行します。
npm run sources
可視化
ではここから可視化に進みます。
/reports/pages
フォルダ内にMarkdownファイルを作成することによってダッシュボードのページを作成することができます。(今回はsales.mdとしています)
以下、sales.mdの編集内容になります。
対象データの読み込み
上記のようにクエリをMarkdown上に記述することで、データの読み込みが可能です。
evidence側では以下のように表示されます。
表形式での表示
<DataTable data={target_data}/>
のように記述することで、表形式での表示が可能です。
また、テーブル上ではスネークケースであったカラム名がパスカルケースに変換されて表示されます。
棒グラフ
今回は年月別の売上を棒グラフで表示してみます。
まずは以下のようにクエリを記述します。
続いて、以下の記述で棒グラフを表示します。
<BarChart
data="{対象クエリ名}"
x="X軸に使用するカラム名"
y="Y軸に使用するカラム名"
series="層別に使用するカラム名"
title="タイトル"
/>
evidence側では以下のように表示されます。
フィルターの追加
<Dropdown>
コンポーネントの使用により、タブ選択が可能となります。
<Dropdown
name= dropdown_name
data={対象クエリ名}
value=フィルターに使用するカラム名
/>
evidence側では以下のように表示されます。
エリアマップ
<AreaMap>
コンポーネントの使用により、地図上にヒートマップを表示することが可能です。
<AreaMap
data={クエリ名}
areaCol=地域を示すカラム名
geoJsonUrl=https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_1_states_provinces.geojson
geoId=name
value=値に使用するカラム名
/>
evidence側では以下のように表示されます。
他にも機能は多岐にわたりますが、今回はここまでとします。
まとめ
今回はevidenceを使用したデータの可視化についてまとめました。
evidenceはVSCode上での操作が可能であり、Markdown形式でSQLやグラフの記述ができるため、データの可視化をコード管理することが可能です。既存のBIツールだと描画の微調整が職人技のように属人化しやすい部分もありますが、evidenceを使用することでコード管理ができるため、チームでの共有や可視化の効率化が期待できます。
今回は触りだけの紹介となってしまいましたが、今後更にevidenceを使いこなしていきたいと思います。
Discussion