dbt のデータマートとスナップショットモデルの構築

ケーススタディ: dbt で構築する Eコマースのデータモデル

Susan Sun

Freelance Data Scientist

dbt データマートモデルの紹介

データマート は、パイプライン終盤のクリーンで使いやすいデータモデルです。

ユースケース

  • データサイエンス向けの特徴量ストア
  • 財務向けの集計KPI
  • エンジニアリング向けのレイテンシ指標
  • SQL をコードとして保存し重複を削減
ケーススタディ: dbt で構築する Eコマースのデータモデル

Looker e-commerce のデータマート

Customers

次を答えます:

顧客は誰か?

購買行動は?

データ粒度:

顧客ごとに1行

サンプル列:

顧客名、顧客の支出額

Products

次を答えます:

売上・原価・利益は?

データ粒度:

製品ごとに1行

サンプル列:

製品カテゴリ、売上、利益

ケーススタディ: dbt で構築する Eコマースのデータモデル

Looker e-commerce のデータマート

dbt のすべてのソースとモデル、および相互関係を示す有向非巡回グラフ。ソースは緑、モデルとマートは青で表示。

ケーススタディ: dbt で構築する Eコマースのデータモデル

段階的な構築

手順1: dbt 外で SQL ロジックを磨き、参照を dbt 構文に置換。

サンプルの SQL ロジックファイルのスクリーンショット。複数の CTE を含む。

手順2: データテストとドキュメントを作成

サンプルの dbt models YAML。モデルとカラムの説明を表示。

手順3: ビルドを検証(例: dbt build

ケーススタディ: dbt で構築する Eコマースのデータモデル

dbt スナップショットモデルの紹介

5つの注文ステータス:

ProcessingShippedCompleteCancelledReturned

データ例:

注文データファイルのプレビュー。2行のデータと9列。列名は order id、user id、status、gender、created at、returned at、shipped at、delivered at、num of items。

ケーススタディ: dbt で構築する Eコマースのデータモデル

Orders: スナップショットでのステータス変更

  • orders_snapshot.sql を作成
{% snapshot orders_snapshot %}
{{
    config(target_schema='main',
      unique_key='order_id',
      strategy='timestamp',
      updated_at='created_at')
}}

SELECT * 
FROM 
{{source('looker_ecommerce', 'orders')}}

{% endsnapshot %}
  • 特定のスナップショットモデルを実行
dbt snapshot -s orders_snapshot.sql
  • すべてのスナップショットモデルを実行
dbt snapshot
  • すべてのモデル(スナップショット含む)を実行
dbt build
1 https://docs.getdbt.com/docs/build/snapshots
ケーススタディ: dbt で構築する Eコマースのデータモデル

練習しましょう!

ケーススタディ: dbt で構築する Eコマースのデータモデル

Preparing Video For Download...