LoginSignup
107
83

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-12-10

概要

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

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

dbt(Data Build Tool)とは

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

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

image.png

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

image.png

引用元: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をより深く理解するための記事です。

107
83
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
107
83