DBT(Data Build Tool) は Python ベースのオープンソースフレームワークであり、BigQuery・Snowflake・Redshift などの最新データウェアハウス上でデータ変換(Transformation)を定義・実行し、体系的に管理することを可能にする。
DBT は ELT(Extract, Load, Transform) パイプラインのうち、T(Transform) に特化したツールである。つまり、外部データソースからの 抽出(Extract) や ロード(Load) 機能は提供せず、すでにウェアハウスに格納されたデータを SQL を用いて変換・モデリング することに最適化されている。
1.DBTを利用する理由
- SQLベースの定義: データモデルをSQLで記述し、Gitでバージョン管理可能
- 再利用性と拡張性: マクロ(Jinja)やテンプレートで繰り返しコードを排除
- 自動化されたパイプライン: モデル実行時に変換・加工・保存を一括処理
- データ品質保証: テスト、ドキュメント化、ソース追跡の機能を提供
2.DBTプロジェクトの構成
ディレクトリ/ファイル | 役割 |
---|---|
models/ | SQLベースのデータモデル定義 |
snapshots/ | 特定時点のデータをスナップショットとして保存 |
seeds/ | CSVなど静的データをロード |
tests/ | データ検証ロジックの定義 |
macros/ | Jinjaベースのユーザー定義関数/テンプレート |
docs/ | プロジェクトドキュメント作成 |
sources/ | 外部のソースデータ定義 |
exposures/ | BIツールや外部アプリケーションとの接続管理 |
metrics/ | 共通指標の定義 |
analysis/ | 分析用SQLクエリ作成 |
3.DBTの基本的な使い方
-
インストール
pip install dbt-snowflake # Snowflake用
-
プロジェクト作成
dbt init my_project
-
モデル作成(
models/my_model.sql
)SELECT id, name, created_at::date AS created_date FROM {{ source('raw', 'users') }}
-
実行
dbt run # モデル実行 dbt test # テスト実行 dbt docs generate && dbt docs serve # ドキュメント生成とWeb表示
DBT記述のポイント
-
モデルはSQLファイルで作成し、
ref()
やsource()
を用いて依存関係を定義する - Jinja構文を利用して動的SQL、マクロ、繰り返し処理を実現できる
-
YAMLファイルで
sources
、tests
、docs
などを宣言し、モデルと統合的に管理する