📊

BIダッシュボードを作れるEvidenceを触ってみた

に公開

EvidenceでBIダッシュボードを作ってみた

Evidenceとは

Evidenceは、BIダッシュボードをコードで管理できるOSSプロジェクトです。SQLとMarkdownを使って、データ分析レポートを作成できます。

背景

スプレッドシートに溜まった膨大なデータを簡単に集計できないもんだろうかと思い触ってみました。スプレッドシートの関数やLooker Studioで集計したりするのですが、スプレッドシートの関数は複雑になりがち、Looker Studioは接続が壊れがち、そんな背景もあり、コードベースで管理できるEvidenceを試してみることにしました。

セットアップ&表示

初期セットアップ

npx degit evidence-dev/template my-evidence-project
cd my-evidence-project
npm install

開発サーバーの起動

npm run sources
npm run dev

これで、localhostがブラウザで立ち上がり、サンプルの集計データが表示されました。

構成を見てみる

ここで表示しているのはpages/ディレクトリ内のindex.mdです。なので、そのファイルを修正すると、ホットリロードで表示画面に即座に反映されます。

表示しているデータはsources/ディレクトリ内のファイルを参照しているみたいですね。

ちなみにデータはdockdbのデータなので

duckdb sources/needful_things/needful_things.duckdb 
D .tables
orders
D .schema orders
CREATE TABLE orders(id BIGINT, order_datetime TIMESTAMP_NS, order_month TIMESTAMP_NS, first_name VARCHAR, last_name VARCHAR, email VARCHAR, address VARCHAR, state VARCHAR, zipcode BIGINT, item VARCHAR, category VARCHAR, sales DOUBLE, channel VARCHAR, channel_group VARCHAR, channel_month VARCHAR);

こんな感じ確認できます。

チャートを追加してみる

AIに支持して、チャートのコードを教えてもらいます書いてもらったらサクッと追加できます。こんな感じのものをindex.mdに追加すればOK。


```sql monthly_sales_trend
select
      date_trunc('month', order_datetime) as month,
      sum(sales) as sales_usd
from needful_things.orders
where category like '${inputs.category.value}'
and date_part('year', order_datetime) like '${inputs.year.value}'
group by month
order by month desc
```

<LineChart
    data={monthly_sales_trend}
    title="Monthly Sales Trend - {inputs.category.label}"
    x=month
    y=sales_usd
    yFmt=usd
/>

データの再読み込み

npm run sources
npm run dev

LineChartが表示されました

感想

順番にやっていくとスムーズにできますが、Claude Codeでいきなり独自のデータを表示させようとしたら、思ったよりもハマりました。

良かった点

  • SQLクエリはClaude Codeでうまく生成できる
  • コードで管理できるので、変更履歴が追いやすい

今回は動かしてみただけですが、自分のデータに置き換えたりしたいので、公式ドキュメントをもう少し読み込んで、触ってみます。

次に試したいこと

  • データを簡単に読み込むこと
  • queryを簡単に書くこと

このあたりをやっていきたいと思っています。

参考リンク

Discussion