「dbtって何?データエンジニアの求人にやたら出てくるけど…」
dbt(data build tool)は、SQLでデータ変換を定義するツールです。SIer出身でSQLが書ける人にとっては、実は一番とっつきやすいモダンデータスタックのツールです。
この記事では、dbtの基本概念をSIerの経験に置き換えながら解説します。
dbtとは何か、SIerの言葉で説明する
一言でいうと、**dbtは「ストアドプロシージャの進化版」**です。
SIerで「ストアドプロシージャでデータを加工して、別テーブルに格納する」という処理を書いたことがある人は多いと思います。dbtがやっていることは本質的にこれと同じです。
違いは、ストアドプロシージャがデータベース内部に閉じているのに対して、dbtはSQLファイルをGitで管理して、テスト・ドキュメント生成・依存関係の管理まで自動でやってくれる点です。
SIerの言葉に翻訳すると以下のようになります。
dbtモデル(.sqlファイル)は、ストアドプロシージャやビュー定義に相当します。SELECT文を書くだけで、dbtが自動的にCREATE TABLE AS SELECTやCREATE VIEWを実行してくれます。
dbt testは、データの結合テスト・品質チェックに相当します。「このカラムにNULLがないこと」「このカラムがユニークであること」をYAMLで定義するだけで、自動テストが走ります。
dbt docsは、設計書の自動生成に相当します。テーブル間の依存関係(リネージ)がビジュアルで表示されるので、Excel方眼紙で設計書を書く必要がなくなります。
ref関数は、テーブル間の依存関係の定義に相当します。{{ ref('stg_orders') }}と書くだけで、dbtがビルド順序を自動で解決してくれます。JP1でジョブの前後関係を手動で定義していたのが、コードで自動管理されるイメージです。
dbtのアーキテクチャ
dbtは「T(Transform)」だけを担当するツールです。
データの取得(Extract)やロード(Load)はFivetranやAirbyteが担当し、取り込まれたデータの変換(Transform)をdbtが担当します。つまり、ETLの「T」に特化したツールです。
最近は「ELT」という順番が主流で、まず生データをそのままクラウドDWHにロードして、その後dbtで変換するという流れが一般的です。
SIerでよくある「ステージングテーブルに生データを入れて、加工テーブルに変換結果を格納する」というパターンと同じです。dbtではこれを以下のレイヤーに分けます。
sources(ソース): Fivetranなどで取り込まれた生データ。SIerでいうステージングテーブルです。
staging(ステージング): ソースデータのクレンジングや型変換。カラム名の統一やNULL処理をここで行います。
intermediate(中間): 複数のステージングモデルを結合した中間テーブル。複雑な変換ロジックを分割して可読性を上げます。
marts(マート): ビジネスユーザーが直接参照する最終テーブル。SIerでいうデータマートです。BIツールやアナリストはここを見ます。
実際にdbtを触ってみる
最速で体感するなら、dbtの公式チュートリアル「jaffle_shop」がおすすめです。
dbt Cloudの無料アカウントを作れば、ブラウザ上でdbtを試せます。ローカル環境の構築が不要なので、30分で最初のモデルを動かせます。
jaffle_shopチュートリアルでは、注文データと顧客データを使って、ステージング→マートの変換パイプラインを構築します。SQLが書ける人なら、チュートリアルの内容で躓くことはほとんどないはずです。
SIer経験者がdbtで戸惑うポイント
DDLを書かない。 SIer出身者は「まずCREATE TABLEしてからINSERT」に慣れていますが、dbtではSELECT文だけ書けばOKです。テーブルの作成はdbtが自動で行います。
YAMLの設定ファイル。 dbtではテスト定義やドキュメントをYAMLで書きます。SIerではExcelで管理していた情報が、すべてコードとしてGit管理されます。最初は違和感がありますが、慣れると圧倒的に効率的です。
Jinja テンプレート。 dbtではSQLの中に{{ }}や{% %}でJinjaテンプレートを書けます。動的SQLを生成するための仕組みで、最初は見慣れない構文に戸惑いますが、基本的なref関数とif文が使えれば実務は回ります。
dbtを学ぶメリット
転職市場でのdbtの需要は急速に伸びています。データエンジニアの求人で「dbt経験歓迎」「dbt導入経験」という記載を見ない日はないほどです。
ただし、dbtの実務経験者はまだ少ないため、チュートリアルを完了して基本概念を理解しているだけでも、「dbtを知っている人」として評価されます。
SQLが書けるSIer出身者にとって、dbtは最も学習コストが低いモダンデータスタックのツールです。まずはjaffle_shopチュートリアルから始めてみてください。
▼ 関連記事
※この記事にはアフィリエイトリンクが含まれています。筆者が実際に利用したサービスのみ紹介しています。


コメント