dbt-transformation-patterns について
dbtで分析パイプラインを構築・保守するチーム向けに、モデル階層、テスト、ドキュメント、増分処理を含む変換プロジェクトの構成方法を解説します。
主な機能
- 01staging・intermediate・martsでモデルを整理
- 02モデル階層ごとの命名規則を適用
- 03データ品質テストを計画
- 04モデルとリネージを文書化
- 05大規模データセットに増分モデルを使用
活用シーン
- 01dbtプロジェクトの構成
- 02階層型データ変換パイプラインの構築
- 03分析モデルへのテストと文書の追加
- 04大規模テーブルの増分処理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wshobson/ agents --skill dbt-transformation-patternsインストール後、Claude Code で/dbt-transformation-patternsを入力して読み込まれたか確認します。
同梱ファイルreferences/details.md
詳細
dbt 変換パターン
モデル構成、テスト戦略、ドキュメント化、増分処理など、本番環境で利用可能な dbt (data build tool) のパターンです。
このスキルを使う場面
- dbt でデータ変換パイプラインを構築するとき
- モデルをステージング、中間、マートのレイヤーに整理するとき
- データ品質テストを実装するとき
- 大規模データセット向けの増分モデルを作成するとき
- データモデルとリネージをドキュメント化するとき
- dbt プロジェクトの構成をセットアップするとき
中核となる概念
1. モデルレイヤー (メダリオンアーキテクチャ)
sources/ Raw data definitions
↓
staging/ 1:1 with source, light cleaning
↓
intermediate/ Business logic, joins, aggregations
↓
marts/ Final analytics tables
2. 命名規則
| レイヤー | プレフィックス | 例 |
|---|---|---|
| ステージング | stg_ | stg_stripe__payments |
| 中間 | int_ | int_payments_pivoted |
| マート | dim_, fct_ | dim_customers, fct_orders |
クイックスタート
# dbt_project.yml
name: "analytics"
version: "1.0.0"
profile: "analytics"
model-paths: ["models"]
analysis-paths: ["analyses"]
test-paths: ["tests"]
seed-paths: ["seeds"]
macro-paths: ["macros"]
vars:
start_date: "2020-01-01"
models:
analytics:
staging:
+materialized: view
+schema: staging
intermediate:
+materialized: ephemeral
marts:
+materialized: table
+schema: analytics
# Project structure
models/
├── staging/
│ ├── stripe/
│ │ ├── _stripe__sources.yml
│ │ ├── _stripe__models.yml
│ │ ├── stg_stripe__customers.sql
│ │ └── stg_stripe__payments.sql
│ └── shopify/
│ ├── _shopify__sources.yml
│ └── stg_shopify__orders.sql
├── intermediate/
│ └── finance/
│ └── int_payments_pivoted.sql
└── marts/
├── core/
│ ├── _core__models.yml
│ ├── dim_customers.sql
│ └── fct_orders.sql
└── finance/
└── fct_revenue.sql
詳細なパターンと実例
詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーション層では不十分な場合にそのファイルを参照してください。
ベストプラクティス
やるべきこと
- ステージングレイヤーを使う - データを一度クリーンにし、どこでも使う
- 積極的にテストする - not null、unique、relationships
- すべてをドキュメント化する - カラムの説明、モデルの説明
- 増分処理を使う - 100 万行を超えるテーブルに対して
- バージョン管理する - dbt プロジェクトを Git で管理する
やってはいけないこと
- ステージングを飛ばさない - 生データ → マートは技術的負債になる
- 日付をハードコードしない -
{{ var('start_date') }}を使う - ロジックを繰り返さない - マクロに抽出する
- 本番環境でテストしない - dev ターゲットを使う
- 鮮度を無視しない - ソースデータを監視する
コメント
Markdown 対応