爆速で試すLightdash⚡︎
概要
Lightdashを知っているだろうか。
噂によると、dbtと連携するBIツールらしい。
最近少し調査してみたから、
- Docker ComposeでLightdashを起動するまでの段取り
- Lookerと比較した感想
なんかをまとめてみる。
対象読者はdbtを利用している人(特にLookerと併用している人)。
前提
この記事に記載した段取りを再現するなら、以下を準備しておく。
-
gcloud CLI
-
gcloud auth login
gcloud auth application-default login
とかで認証もしておく
-
- NodeJS / NPM
- LightdashのdocumentではNVM経由でのインストールを推奨していた
- Python
- Docker / Docker Compose
- 私はM1のmacでColimaを使っている
- その場合
colima start --arch x86_64
のようにarchitectureを明示する必要があった
爆速で試す
GitHubにrepositoryを用意したからそれを使う。setup.sh
はdbtやLightdashのCLIをinstallし、Pythonの仮想環境を作成しているだけ。
git clone https://github.com/kitta65/poc-lightdash
cd poc-lightdash
./scripts/setup.sh
dbtを実行しておく。
source ./venv/bin/activate
dbt init
dbt run
Lightdashを起動する。The "XXX" variable is not set. Defaulting to a blank string.
という警告が複数出るが、とりあえず無視してよいだろう。初回はそれなりに時間がかかる。
docker-compose --env-file .env up -d
browserで http://localhost:8080 にアクセスし、以下の画面が表示されればLightdashが起動されている。画面の指示に従い適当に情報を入力していく。
DWHはBigQueryを選択。dbt連携はCLIで行う。
この先はCLIでの操作となる。スクショ部分でtokenを確認し、以下のコマンドを実行。スクショでlocalhost:3000
だった部分をlocalhost:8080
としている点に注意。この記事ではlightdashをglobalにinstallしていないので、npx経由で実行している。
npx lightdash login http://localhost:8080 --token YOUR_TOKEN
npx lightdash deploy --create
これで設定完了。あとは好きなように試せばよい。
解説
今回用意したrepositoryのdbtはこんなlineageになっている。theLook eCommerceという公開datasetを利用してみた。
シンプルな普通のdbt projectに見えるが、ymlはLightdash向けに何点か加筆されている。
# 抜粋
models:
- name: sessions
meta:
joins:
- join: users
sql_on: ${sessions.user_id} = ${users.user_id}
columns:
- name: user_id
meta:
dimension:
type: number
metrics:
count_users:
type: count_distinct
meta:
以下に注目。
dimensionやmetricsはexplore機能においてそのcolumnをどう扱うかの設定。dimensionの方はある程度自動生成できる。
joinはtable(dbtの文脈ではmodel)同士をどう結合するかの設定。結合しておけばexplore機能でそのtableのdimensionやmeasureも利用できる。
Lightdashを起動するdocker-compose.yml
はここで紹介しているのと同じものを利用させてもらった。dbのデータがvolumeになっているから、この記事で紹介した手順を最初からやり直したい場合はdocker volume remove poc-lightdash_db-data
のように削除するとよい。
# 抜粋
services:
db:
image: postgres:15.4
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
最後にnpx lightdash deploy --create
を実行したが、--create
はprojectを作成するという意味。単にdbt側の変更内容をLightdash側に反映したいだけなら、オプションなしでnpx lightdash deploy
。
「あとは好きなように試せばよい」と言われても、そもそも何からやったらよいのか...という人はgetting startedに書いてあることから試すといいかも。
以下は自分がいろいろ触ってみた所感。
所感
UI
Lookerを利用している人ならかなり直感的に使えそう。以下はexploreのスクショだが、Lookerのexploreと配置がかなり似ている。
dbt連携
dbtのymlに多少追記するだけで利用開始できるのはかなり感動的だった。Lookerからdbtのmodelを参照する場合は、model・explore・viewを定義して...とやることが多いので対照的。
ただ、記述量が少なくて済むということは、複雑な処理を記述する層がないということでもある。(私を含め)これまでLookerのviewに黒魔術のようなSQLを書いていた人がLightdashに乗り換える場合、その処理をどこで吸収するか悩むことになりそう。
機能面
これもLookerとの比較になるが、現状だと「この機能ないんだ」と感じる部分もあった。例えば以下。
- symmetric集計
- query結果のキャッシュ
- alert
- test
- saved chartsにpublic accessの許可(Lookerの場合)
とはいえ最低限の機能はすでに揃っている印象。
独自の言語がない
Lookerは独自の関数や演算子の利用を迫られる場合があって、たまに辛かった。一方でLightdashは接続しているDWHのSQLだけ知っていればだいたい何でもできて快適。例えばtable calculationなんかも普通にSQLで書ける。
設定もdbtのymlで完結し、LookMLのような独自の言語が存在しない。LookMLで変わったことをしようとすると様々な壁にぶつかるが、ymlは既存のツールが充実しているためハックしやすそう。
最後に
ちょっと触っただけだけれど、自分はけっこう好印象だった。Lookerを使っている人はぜひLightdashも触ってみて!
Discussion