📊

evidenceを使用したデータの可視化

2024/11/28に公開

はじめに

こんにちは! 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の拡張機能によって、インストール自体は簡単に行うことができます。
alt text
How does Evidence work?

特徴

  • データソースにはSQLだけでなく、CSVのような非SQLデータソースを含めることが可能。
  • Markdownファイル内で実行されたクエリの実行結果をもとにグラフやチャートが作成される。
  • Loops機能(forループのような機能)によって繰り返し処理が可能。
  • データソースからParquetファイルでキャッシュ層に保存され、キャッシュ層に対してクエリを実行するため、データの読み込み速度が速い。
    alt text
    Introducing Universal SQL

セットアップ

今回はVSCode上で既存のdbtプロジェクトを利用して、evidenceをセットアップしていきます。
※dbt Cloudからは行えないそうです。また、既にdbtプロジェクトがあることを前提としています。

VSCodeの拡張機能のインストール

以下の拡張機能をVSCodeにインストールします。
https://marketplace.visualstudio.com/items?itemName=Evidence.evidence-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が起動します。
alt text

デフォルトでは以下のようなページが表示されます。
alt text

データソースの設定

デフォルトでは、データソースがDuckDBとなっています。
http://localhost:3000/settingsへのアクセスもしくは、ダッシュボード右上の3点ボタンのSettingsのクリックによって設定画面にアクセスできます。

  1. Datasource Typeにて任意のデータソースを選択
    alt text

  2. Source nameを任意の名前で入力し、Confirmをクリック

  3. SOURCE OPTIONSの項目を入力し、Confirm Changesをクリック

接続が完了すると、VSCode上のreports/sourcesフォルダ内にSource nameで指定したフォルダが作成されます。
alt text

  1. 使用するデータソースの作成
    今回はData Engineer Campのdbt-dimensional-modellingで作成したOne Big Tableを利用して可視化を行います。
    /reports/sourcesフォルダ内に以下のようなsqlファイルを作成し、データソースを作成します。
SELECT `使用カラム名` FROM `テーブル名`

alt text

ファイルを作成したら、以下を実行します。

npm run sources

可視化

ではここから可視化に進みます。
/reports/pagesフォルダ内にMarkdownファイルを作成することによってダッシュボードのページを作成することができます。(今回はsales.mdとしています)
alt text
以下、sales.mdの編集内容になります。

対象データの読み込み

alt text
上記のようにクエリをMarkdown上に記述することで、データの読み込みが可能です。

evidence側では以下のように表示されます。
alt text

表形式での表示

<DataTable data={target_data}/>

のように記述することで、表形式での表示が可能です。
また、テーブル上ではスネークケースであったカラム名がパスカルケースに変換されて表示されます。
alt text

棒グラフ

今回は年月別の売上を棒グラフで表示してみます。
まずは以下のようにクエリを記述します。
alt text

続いて、以下の記述で棒グラフを表示します。

<BarChart
    data="{対象クエリ名}"
    x="X軸に使用するカラム名"
    y="Y軸に使用するカラム名"
    series="層別に使用するカラム名"
    title="タイトル"
/>

evidence側では以下のように表示されます。
alt text

フィルターの追加

<Dropdown>コンポーネントの使用により、タブ選択が可能となります。

<Dropdown
    name= dropdown_name
    data={対象クエリ名}
    value=フィルターに使用するカラム名
/>

evidence側では以下のように表示されます。
alt text

エリアマップ

<AreaMap>コンポーネントの使用により、地図上にヒートマップを表示することが可能です。

<AreaMap 
    data={クエリ名} 
    areaCol=地域を示すカラム名
    geoJsonUrl=https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_1_states_provinces.geojson
    geoId=name
    value=値に使用するカラム名
/>

evidence側では以下のように表示されます。
alt text

他にも機能は多岐にわたりますが、今回はここまでとします。

まとめ

今回はevidenceを使用したデータの可視化についてまとめました。
evidenceはVSCode上での操作が可能であり、Markdown形式でSQLやグラフの記述ができるため、データの可視化をコード管理することが可能です。既存のBIツールだと描画の微調整が職人技のように属人化しやすい部分もありますが、evidenceを使用することでコード管理ができるため、チームでの共有や可視化の効率化が期待できます。
今回は触りだけの紹介となってしまいましたが、今後更にevidenceを使いこなしていきたいと思います。

脚注
  1. Looker studio ↩︎

  2. Apache Superset ↩︎

  3. LightDash ↩︎

  4. パフォーマンス向上のためにデータを抽出する ↩︎

  5. コード管理できるBIツール「Evidence」の紹介 ↩︎

  6. evidence ↩︎

  7. analytics_monorepo ↩︎

Rehab Tech Blog

Discussion