ケーススタディ: dbt で構築する Eコマースのデータモデル
Susan Sun
Freelance Data Scientist
dbt をインストール
pip install dbt
dbt プロジェクト looker_ecommerce を初期化
dbt init looker_ecommerce
セットアップを確認
cd looker_ecommerce
dbt debug
dbt 自動生成のディレクトリ構成:

distribution_centers.csv は小規模かつ静的で、行数は10件のみ
生の distribution_centers.csv データのサンプル

orders.csv は大規模で継続更新され、125,000 行・9 列
生の orders.csv データのサンプル:

Distribution center の生データファイル:
Orders の生データファイル:
dbt seeddbt sourcedbt init は基本的なファイル構成を自動生成します:
looker_ecommerce/
macros/
models/
seeds/
snapshots/
tests/
dbt_project.yml
distribution_center を seed として読み込み:
looker_ecommerce/
macros/
models/
stg_looker__distribution_centers.sql
seeds/
looker__distribution_centers.csv
snapshots/
tests/
dbt_project.yml
stg_looker__distribution_centers.sql 内:
SELECT
id,
name,
latitude,
longitude
FROM
{{ref('looker__distribution_centers')}}
orders を source として読み込み:
looker_ecommerce/
macros/
models/
stg_looker__orders.sql
seeds/
snapshots/
tests/
dbt_project.yml
stg_looker__orders.sql 内:
SELECT *
FROM
{{source('looker_ecommerce', 'orders')}}
sources をドキュメント化:
looker_ecommerce/
macros/
models/
_looker__sources.yml
seeds/
snapshots/
tests/
dbt_project.yml
_looker__sources.yml 内:
version: 2
sources:
- name: looker_ecommerce
tables:
- name: orders
models ディレクトリ配下のサンプル _looker__models.yml ファイル:version: 2
models:
- name: stg_looker__distribution_centers
description: 配送拠点の名称と位置
- name: stg_looker__orders
description: 注文状況などの注文情報
looker_ecommerce/
macros/
models/
_looker__models.yml
_looker__sources.yml
stg_looker__distribution_centers.sql
stg_looker__orders.sql
seeds/
looker__distribution_centers.csv
snapshots/
tests/
dbt_project.yml
csv を seed ファイルとして読み込み
dbt seed
dbt プロジェクト内の全モデルを作成/更新
dbt run
指定モデルのみ作成/更新
dbt run --select model
プロジェクト内の全テストを実行
dbt test
指定モデルのテストを実行
dbt test --select model
dbt run と dbt test を一括実行
dbt build
dbt build --select model
models の命名規則:
<data_source>__<model_name>.sqle.g.
stg_looker__distribution_centers.sqlstg_looker__orders.sqlyaml の命名規則:
_<data_source>__<artifact_type>.ymle.g.
_looker__models.yml_looker__sources.ymlケーススタディ: dbt で構築する Eコマースのデータモデル