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