【ディービーティー】

dbt とは?

最終更新:
💡 SQLのモデルをつなぎ、変換をテスト・管理する

データ基盤上での変換処理をモデルとして管理し、テストやドキュメント生成を組み合わせるツール。SQLモデルを中心に、対応する環境ではPythonモデルも利用できる。

📌 このページのポイント
dbt:データ変換をモデルで管理 ELTの変換(T)が中心 E:抽出 L:取込 T:変換 SQLなどでモデル dbtで実行・管理 モデル 変換内容 ref()で参照 テスト 値の検査 実行して確認 ドキュメント 列やモデルの 説明と関係
抽出・取り込みは別の道具と組み合わせ、dbtでは取り込んだデータの変換を管理する。モデル・テスト・ドキュメントは関連する機能の分類であり、下段は実行順を示していない。
ひよこ ひよこ
dbtってETLツールとは違うの?
ペンギン先生 ペンギン先生
中心になるのは、ELTのT、つまり取り込んだ後のデータ変換だよ。データ基盤上で、分析などに使うデータへ加工する。抽出や取り込みの道具と組み合わせて使うもので、dbtだけを置けば取り込みから全部完成するという意味ではないんだ。
ひよこ ひよこ
SELECT文を書くだけでいいの?Pythonは使わないの?
ペンギン先生 ペンギン先生
SQLモデルはSELECT文で変換内容を書き、設定に応じてテーブルやビューなどとして作るよ。接続先やモデルの設定を用意して実行する必要がある。ref()でモデルを参照すると、その関係から実行の順序を組み立てられる。Pythonモデルもあるけれど、使えるデータ基盤やアダプターを確認しよう。
ひよこ ひよこ
テストって何をテストするの?
ペンギン先生 ペンギン先生
値がNULLでないか、重複していないか、参照する値が別のモデルにあるか、などを調べるデータテストがあるよ。YAMLなどで検査を定義し、dbt testで実行する。定義を書いた瞬間に検査が走るわけではないし、検査していない業務上の誤りまで全部防げるわけでもないんだ。
ひよこ ひよこ
ドキュメントも自動で作れるの?
ペンギン先生 ペンギン先生
モデルや列の説明と、モデル間の関係を整理できるよ。ローカルではdbt docs generateでサイトを生成し、dbt docs serveで表示する。dbt v2の公式資料では、ホスト型のdbt platformで見る場合はCatalogを使うと説明されている。実行系や使う場所による違いも確認しよう。
ひよこ ひよこ
dbt CloudとCoreって何が違うの?
ペンギン先生 ペンギン先生
以前のCloudとCoreだけで、今の利用形態すべてを説明するのは難しいね。現行資料はローカルのCLIと、開発やジョブの実行を支えるdbt platformを案内し、実行系もv1とv2に分けているよ。対応するデータ基盤や機能、運用方法を確認して選ぶ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「dbt」って出てきたら「SQLを中心にデータ変換をモデル化し、テストや説明も管理するツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「data build tool」 = データ構築ツール
💬 dbtはもともとdata build toolの略称として付けられた名前だよ

参考資料

← 用語集にもどる