データエンジニア界隈で話題のdbt(data build tool)のまとめ


概要

データエンジニア界隈で話題となってきたdbtに関する調査内容を共有します。
OSS版のdbtでも機能が充実しており、データエンジニアの方には一部の機能の利用だけでも価値があるツールです。

必要に応じて、この記事を更新します。

dbt(Data Build Tool)とは

dbtとはData Build Toolの略であり、dbt Labs社が開発しているデータ連携のELTにおけるT(データストア内でのデータ変換)の実施をサポートするツールです。

機能をざっくり整理すると下記のものがあり、SQL文のコンポーネント化やドキュメントの自動生成に特異性があります。

有償版であるdbt cloudとOSS版であるdbt Coreがあります。dbt cloudにて、developer版という個人検証用の無償ライセンスもあるので、とりあえず触りたい方はこちらがおすすめです。

引用元:dbt Pricing Plans (getdbt.com)

ツールの特徴

  1. データの実体化方法としては、ビューの生成、CTAS(CREATE TABLE AS SLECT)、増分更新、差分更新(MERGE)、差分履歴更新(SCD Type2相当)がある。カスタマイズも可能であり、データ連携先データストアの製品特徴に応じて処理を自動で実施。
  2. SQL文を発行するツールであることから、dbtの実行環境のスケールをあまり考慮する必要はない。データをロードする機能は基本的にはなく、データ連携済みであることが前提。
  3. 結合キーは単一列であることが推奨されており、複数カラムの値をハッシュ化する方法(Generating Surrogate Keys Across Warehouses | dbt Developer Blog (getdbt.com))が紹介されている。
  4. テスト機能にて、ユニークキー制約性チェック、NOT NULL制約チェック、ドメイン制約、及び、外部キー制約チェックがあり、SQLによりテストケースを作成することが可能。dbtにはデータロード機能がないことから、システムテストの実施は別途必要。
  5. dbt_utils(dbt - Package hub (getdbt.com))などの公開されているパッケージを利用することで、先駆者の知見を拝借可能。
  6. ドキュメント機能にて、dbt cloud(有償サービス)を利用しない場合には、自前でホストする環境で共有(Deploying the documentation site | dbt Docs (getdbt.com))する必要がある。
  7. ドキュメント機能にて、データ連携に関する情報だけでなく、データ活用に関する情報(Exposures AnalysesMetrics等)を、yaml、あるいは、Markdownで記述可能。

利用シナリオ

利用シナリオには下記がある。

# シナリオ 概要
1 データ連携SQLとドキュメントの生成 データ連携処理のSQLとドキュメントを生成。
2 データ連携処理パイプラインの個別実行 個別のデータ連携処理パイプラインを実行。
3 データ連携処理パイプラインの全体実行 複数のデータ連携処理パイプライン群を実行。

dbtに関する情報源

製品関連情報

# サイト 概要
1 dbt Docs (getdbt.com) ツールの公式ドキュメント
2 dbt-labs/dbt-core: dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications. (github.com) 実際のコード
3 dbt Community Discourse (getdbt.com) 公式のコミュニティサイト
4 dbt blog (getdbt.com) 公式ブログ
5 Join the dbt Community (getdbt.com) slack

dbt の概要を理解するためのページ

# ページ 概要
1 What is dbt? dbt Docs (getdbt.com) ドキュメントの最初のページ。
2 What, exactly, is dbt? (getdbt.com) dbtがどういったものであるかが説明。
3 Setting up dbt Docs (getdbt.com) 基本チュートリアル。
4 List of FAQs dbt Docs (getdbt.com) dbtに関するよくある質問に対する回答集。
5 Learn Analytics Engineering with dbt dbt Learn (getdbt.com) 無償のオンライントレーニング。
6 Available adapters dbt Docs (getdbt.com) 利用可能なデータストアサービスの記事。
7 The Analytics Engineering Guide (getdbt.com) データ活用におけるデータエンジニアリングを実施する際のガイド

サンプルコード

# ページ 概要
1 dbt-labs/jaffle_shop: A self-contained dbt project for testing purposes (github.com) 架空のeコマースストアのデモ
2 dbt-labs/mrr-playbook (github.com) サブスクリプション収益をモデル化するデモ
3 dbt-labs/attribution-playbook (github.com) マーケティングをモデル化するデモ
4 transform/snowflake-dbt · master · GitLab Data / GitLab Data Team · GitLab Gitlab社が社内で利用しているシステムのコード

開発ベストプラクティス

# ページ 概要
1 Best practices dbt Docs (getdbt.com) dbtドキュメント上のベストプラクティス
2 dbt Guide GitLab Gitlab社の開発標準
3 corp/dbt_style_guide.md at master · dbt-labs/corp (github.com) dbt社推奨のコーディング規約

dbtにより生成されるドキュメントのサンプル

# ページ 概要
1 dbt Docs (getdbt.com) サブスクリプション収益をモデル化するデモ
2 dbt Docs (getdbt.com) マーケティングアトリビューションをモデル化するデモ
3 GitLab dbt Docs (gitlabdata.com) Github社のシステムのドキュメント

関連記事

次の記事はdbtをより深く理解するための記事です。