2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Lightdash触ってみた

Last updated at Posted at 2024-12-17

はじめに

12/15(日)にちゅらデータのデータエンジニアの人たちが集まり、オンライン合宿を行いました。
今回のオンライン合宿は各自でやりたいことに取り組み、最後にLTで発表する流れでした。
私はBIツール周りを色々触ってみようと思いました。
最終的には時間の都合でLightdashしか触れなかったのでそちらを報告します!

Lightdashとは

Lightdashは、dbtで定義したファイルをそのまま可視化することができるツールです。
LightdashにはOSS版とクラウド版がありますが、今回はOSS版を使ってみました。
ちなみにクラウド版の場合、21日のフリートライアルがありますが、スターターでも$800/月くらいのサービスになります。

今回私が実施した使用環境
OS: Mac
dbt-core: 1.8.3
Lightdash: 0.1418.1
Database: Snowflake

Snowflakeの事前準備

RAW、DWH、MARTのスキーマを作成しておきました。

create database bi_training_db;
create schema raw;
create schema dwh;
create schema mart;

それ以外にもロールやユーザーが必要ですがそれぞれ作成してください。

データの準備

今回のデータセットはタブローではお馴染みのSuperstoreを使いました。
サンプル-スーパーストア.xlsはここからダウンロードして、注文、返品、関係者のシートがあるため、それぞれcsvで保存しなおしました。(こちらのリポジトリのdatasouceフォルダにあります)
その後、Snowsightにて手動で取り込みました。(下記のキャプチャの場所で実行)
スクリーンショット 2024-12-15 17.51.57.png

スクリーンショット 2024-12-15 17.53.59.png

dbtの準備

こちらのリポジトリのソースコードを参考にしてください。
.env.sampleにある環境変数を各自の環境に合わせていただければ動くはずです!

Lightdashのセットアップ

ここは弊社のkei忍者が書いていましたので参考にしてください。(dbtの箇所は不要です)
Lightdash と Snowflake を使ってデータを可視化する方法

最終的にはLightdashを起動して下記をdbtのプロジェクトフォルダで実行できればOK

> lightdash deploy --create

Lightdashの便利だと思ったこと

日付型は自動でDay、Week、Month、Yearで指標にできる

スクリーンショット 2024-12-16 11.17.54.png

上記キャプチャのOrderdateですが日付型のカラムになります。こんな感じで日付の粒度が分割されるので、月単位の売り上げ、年単位の売り上げ、とかが簡単にできちゃいます。

ちなみに左のDimensionsからOrderdate-MonthとSales(売上金額)を選択して、[Run query]を押すとこんなチャートが作成されます。が、Salesがサマリーしていないので、下部にあるSQLを変更してあげます。
スクリーンショット 2024-12-16 11.23.34.png

SELECT
  DATE_TRUNC('MONTH', "mart_orders".orderdate) AS "mart_orders_orderdate_month",
  "mart_orders".sales AS "mart_orders_sales"
FROM BI_TRAINING_DB.mart.mart_orders AS "mart_orders"


GROUP BY 1,2
ORDER BY "mart_orders_orderdate_month" DESC
LIMIT 500

SELECT
  DATE_TRUNC('MONTH', "mart_orders".orderdate) AS "mart_orders_orderdate_month",
  SUM("mart_orders".sales) AS "mart_orders_sales"
FROM BI_TRAINING_DB.mart.mart_orders AS "mart_orders"


GROUP BY 1
ORDER BY "mart_orders_orderdate_month" DESC
LIMIT 500

再度[Run query]すると狙った通り月毎の売上高のチャートが表示されました。

スクリーンショット 2024-12-16 11.28.31.png

自動でdbtのymlを作成してくれる

Lightdashには自動でymlファイルを作ってくれる機能があります。そのためカラム名やカラムのタイプをわざわざ記述する必要がありません。

lightdash dbt run

これをコマンドラインから実行するとmart_returns.sqlから以下のmart_returns.ymlが作成されます。

version: 2
models:
  - name: mart_returns
    columns:
      - name: orderid
        description: ""
        meta:
          dimension:
            type: string
      - name: return
        description: ""
        meta:
          dimension:
            type: string

あとはこれをデプロイするだけです。

> lightdash deploy --create

ちなみにdbt-osmosisを使うと同じことができますが、若干書き方が異なる気がします。

また、dbtではymlファイルがそのままdocumentとして使えますが、ここで生成されたymlは使えるのでしょうか?

スクリーンショット 2024-12-15 18.02.00.png 使えました!

感想

今回はLightdashを使ってデータを可視化してみました。dbtにはjaffle-shopと言うデータセットがあるので、それを使えばもっと早くできたかもですが、他のBIツールも使ってみたかったので敢えてスーパーストアのデータセットを使いました。

Lightdash自体はとても使いやすく、dbtとの相性の良さを感じました。
非エンジニアでもSQLを触らず(?)、ポチポチで可視化できるのは嬉しいですよね。

備忘録

インストール時に下記を実行しますが、なぜかdockerが無いと言われ…

> scripts\install.sh

手動でdockerを起動したら普通に使えました

> docker compose up -d
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?