dbt + BigQuery→Lightdashをやってみた・可視化編
はじめに
前回の記事では、Lightdashを使いたいので、そのために必要なマートテーブルの作成までを行いました!今回の記事では、いよいよ本題のLightdashを使ってみた内容を書いていきます。
おさらい
今回使用しているデータはTableauのサンプルデータのBookshopデータで、月毎で人気の本を分析するためのデータマートを設計しました。以下のようなスタースキーマのテーブルを使って、Lightdashで簡単なグラフやダッシュボードを作ってみます。
(「TableauのサンプルデータなのにLightdashで可視化するんかい」というツッコミは受け付けていません)
Lightdashを使ってみる
Lightdashとは、dbt-labsが開発しているツールで、一言で言うと「セマンティックレイヤーをベースとしたBIツール」です。今回は、Cloud版のLightdashを使ってみます!
詳しくは以下の記事も参考にしてみてください。プロジェクトの作成
Lightdashのアカウントを作成すると、以下のようなデータウェアハウスを選ぶ画面が出てきます。今回は、BigQueryを選択します。
BigQueryを選ぶと、セットアップ方法を聞いてきます。今回は「Using your CLI」を選びました。
そうすると、実行するコマンドが出てきます。指示通りに、dbtのプロジェクトでコマンドを実行します。
実行するコマンドは以下です。
- Lightdash CLIをインストール
npm install -g @lightdash/cli@0.16321
- Lightdashにログイン
lightdash login https://app.lightdash.cloud --token <token>
- プロジェクトの作成
lightdash deploy --create
なんかエラーが出てデプロイできない
手順通りにコマンドを実行したのですが、以下のようなエラーが出てテーブルが出てこない状態でした。
エラー内容
Found 5 errors when validating dbt models:
- silver_sales: No dimensions available
- silver_checkouts: No dimensions available
- monthly_popular_books: No dimensions available
- fact_monthly_sales_and_checkouts: No dimensions available
- dim_book: No dimensions available
- ERROR> silver_sales : No dimensions available
- ERROR> silver_checkouts : No dimensions available
- ERROR> monthly_popular_books : No dimensions available
- ERROR> fact_monthly_sales_and_checkouts : No dimensions available
- ERROR> dim_book : No dimensions available
Compiled 5 explores, SUCCESS=0 ERRORS=5
? Add a project name or press enter to use the default: [Bookshop dbt] Bookshop
? Do you confirm Lightdash can store your warehouse credentials so you can run queries in
Lightdash? Yes
? Do you want to save this answer for next time? Yes
✔️ New project Bookshop created
Can’t deploy with errors. If you still want to deploy, add --ignore-errors flag
調べてみると、テーブルのドキュメントをYAMLファイルで書く必要があったようです。
今回必要なテーブルはmonthly_popular_books
なので、とりあえず以下のようなYAMLファイルを書きました。ドキュメントを書かないとLightdashで使えないというのは、メタデータを用意させることを強制しているという意味では理にかなってる気がします。
version: 2
models:
- name: monthly_popular_books
columns:
- name: book_id
description: "本のユニークなID"
- name: year_month
description: "年月"
- name: amount
description: "その月の売上数"
meta:
metrics:
total_amount:
type: sum
- name: checkouts
description: "その月の貸出数"
meta:
metrics:
total_checkouts:
type: sum
- name: title
description: "本のタイトル"
- name: genre
description: "本のジャンル"
- name: author_name
description: "著者名"
- name: average_rating
description: "平均のレビュー点数"
ついでにMetricsも用意しておきました。
本当は他のテーブルのドキュメントも書く必要はありますが省略します。エラーを無視するオプションをつけて、デプロイしました。
lightdash deploy --ignore-errors
グラフを作ってみる
Lightdash上でテーブルが見えるようになったので、テーブルからグラフを作ってみます。
「New」から「Query from tables」を選択し、2193年5月の売上数が多い順に本のタイトルと著者名を見てみます。
実際に発行されるクエリを見ることもできます。
また、グラフの形式は簡単に選ぶことができました。
ここで作ったグラフは保存ができるので保存しておきます。後からダッシュボードに追加することもできます。
ダッシュボードにしてみる
売上数が多い順の棒グラフと同様に貸出回数が多い順の棒グラフも用意して、ダッシュボードとしてグラフを並べてみました。レイアウトは簡単に配置できて便利だと思います。
また、フィルタを後から自由に追加できるのが便利な機能だと思いました。他のBIツールではダッシュボードの作成時に必要なフィルタを用意しておく必要がありますが、Lightdashではテーブルにあるディメンションは自由にフィルタとして使えるようです。
例えば、あらかじめ日付のフィルタのみ用意しておいたダッシュボードに、後からジャンルのフィルタの追加ができました。
ダッシュボードをコードで保存する
Lightdashの利点の1つがダッシュボードをYAMLファイルで管理できることです。
以下のコマンドを実行すると、Lightdashで作成したグラフやダッシュボードをYAMLファイルでダウンロードできます。
lightdash download
今回作成したダッシュボードのYAMLファイルはこんな感じです。
YAMLファイル
name: Monthly popular books
description: ""
updatedAt: "2025-05-22T12:41:38.955Z"
tiles:
- x: 18
"y": 0
h: 9
w: 18
tabUuid: null
type: saved_chart
properties:
title: ""
hideTitle: false
chartSlug: top-10-checkouts-1747740412006
tileSlug: top-10-checkouts-1747740412006
- x: 0
"y": 0
h: 9
w: 18
tabUuid: null
type: saved_chart
properties:
title: ""
hideTitle: false
chartSlug: top-10-amount
tileSlug: top-10-amount
filters:
metrics: []
dimensions:
- target:
fieldId: monthly_popular_books_year_month_month
fieldName: year_month_month
tableName: monthly_popular_books
values:
- 2193-05
disabled: false
operator: equals
required: false
tileTargets:
top-10-checkouts-1747740412006:
fieldId: monthly_popular_books_year_month_month
tableName: monthly_popular_books
top-10-amount:
fieldId: monthly_popular_books_year_month_month
tableName: monthly_popular_books
tableCalculations: []
tabs: []
slug: monthly-popular-books
spaceSlug: shared
version: 1
downloadedAt: "2025-05-22T12:50:34.304Z"
グラフのYAMLファイルもダウンロードできます。それぞれのYAMLファイルは、GitHubも参照してみてください。
おわりに
今回は、Lightdashを使ってdbtで整形したテーブルを可視化してみました。データ整形編と合わせて、データモデリングと可視化を一連でやってみることができたと思います。簡単なシナリオでやってみた例ですが、何かの参考になればと思います!
Discussion