0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DBTとは?

Posted at

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の基本的な使い方

  1. インストール

    pip install dbt-snowflake           # Snowflake用
    
  2. プロジェクト作成

    dbt init my_project
    
  3. モデル作成models/my_model.sql

    SELECT
        id,
        name,
        created_at::date AS created_date
    FROM {{ source('raw', 'users') }}
    
  4. 実行

    dbt run                              # モデル実行
    dbt test                             # テスト実行
    dbt docs generate && dbt docs serve  # ドキュメント生成とWeb表示
    

DBT記述のポイント

  • モデルはSQLファイルで作成し、ref()source() を用いて依存関係を定義する
  • Jinja構文を利用して動的SQL、マクロ、繰り返し処理を実現できる
  • YAMLファイルsourcestestsdocs などを宣言し、モデルと統合的に管理する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?