🗂

爆速で試すLightdash⚡︎

2024/01/02に公開

概要

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を明示する必要があった

爆速で試す

https://github.com/kitta65/poc-lightdash

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向けに何点か加筆されている。

sessions.yml
# 抜粋
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:以下に注目。
dimensionmetricsはexplore機能においてそのcolumnをどう扱うかの設定。dimensionの方はある程度自動生成できる。
joinはtable(dbtの文脈ではmodel)同士をどう結合するかの設定。結合しておけばexplore機能でそのtableのdimensionやmeasureも利用できる。

Lightdashを起動するdocker-compose.ymlここで紹介しているのと同じものを利用させてもらった。dbのデータがvolumeになっているから、この記事で紹介した手順を最初からやり直したい場合はdocker volume remove poc-lightdash_db-dataのように削除するとよい。

docker-compose.yml
# 抜粋
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との比較になるが、現状だと「この機能ないんだ」と感じる部分もあった。例えば以下。

とはいえ最低限の機能はすでに揃っている印象。

独自の言語がない

Lookerは独自の関数や演算子の利用を迫られる場合があって、たまに辛かった。一方でLightdashは接続しているDWHのSQLだけ知っていればだいたい何でもできて快適。例えばtable calculationなんかも普通にSQLで書ける。

設定もdbtのymlで完結し、LookMLのような独自の言語が存在しない。LookMLで変わったことをしようとすると様々な壁にぶつかるが、ymlは既存のツールが充実しているためハックしやすそう。

最後に

ちょっと触っただけだけれど、自分はけっこう好印象だった。Lookerを使っている人はぜひLightdashも触ってみて!

Discussion