dbtについて
dbtを使用してメタデータを整理する機会があったので、dbtってそもそも何ぞや、ということを調べてまとめました。
dbt (Data Build Tool) とは
「DWH 製品におけるデータ処理の記述」を支援するオープンソースのコマンドラインツールです。
データパイプライン全体における位置づけとしては ELT(Extract,Load,Transtomm)におけるT(データストア内でのデータ変換)の実施をサポートするツール。
SQLの SELECT 文だけで開発可能なので、DDL(データ定義言語:CREATE,DROPなど)を書く必要がないです。
dbtを使うメリット
データ分析の民主化
・ 誰もがいつでもデータを使えるようになる
・ どんな人でもすぐに欲しいデータに対して分析ができる
・データの生成の過程がわかる
・ 分析者にとって信頼性のあるデータとなる
・作成されたSQL属人化しない
SELECT文だけでデータ変換が可能
・ DDLが不要
・Pythonなどのプログラミングが不要
・生成するデータモデルのマテリアライズが指定できる
{{config(materialized = table) }} → CREATE TABLE
以下のマテリアライズの指定が可能です
・Table(テーブル)
・View(ビュー)
・Ephemeral(一時的)
・Incremental(増分更新)
・独自開発
{{config(materialized = table) }}
SELECT *
FROM order_dable
WHERE customer_name = 'classmethod'
上のコードが下のように変換されます
CREATE TABLE AS analytics.cm,order_table AS (
SELECT *
FROM order_dable
WHERE customer_name = 'classmethod'
);
SQL文中のref関数からデータベース同士の関係を自動的に抽出、データの流れが可視化できる
・ref文を元にdbtが自動的に図を作ってくれます
・ ズームアップしてモデルの依存関係を見ることも可能です
データのテストができる
yml.ファイルを作成して、実行するとテストができます。
models:name:テストをしたいデータモデルの名前を指定
culumns:カラムに対して行いたいテストを指定する
models:
- name: stg_customers
description:”顧客テーブルをステージング化したもの”
columns:
- name: customer_id tests:
- unique
- not_null
- name: stg_orders
description:“注文データをステージング化したもの"
columns:
- name: status
description: '( doc("order_status") 1)'
tests:
- accepted_values:
values:
- completed
- shipped
- returned
- placed
- return_pending
severity: warn
データベースのメタデータ作成
あるデータベースがどのようなデータをもつのか、どのデータベースを加工して生まれたものなのかなどの情報をDWHからドキュメント化し、データベースのメタデータが簡単に出力可能です。
dbt docs generateで作成ができます。
Gitリポジトリと連携したCI/CD機能
dbtでは連携したGitリポジトリにSQLをプルリクすることで、それを検知したdbtが自動的にSQLのチェックやそのSQLによる影響のテスト等を行います(CI機能)。またデプロイ用のジョブを設定することでデプロイまでを自動化することも可能です(CD機能)。
クエリをGithubで管理し、レビューを通ったものだけデプロイできるCI/CD環境を簡単に構築できる
サポートされているデータプラットフォーム
1. BigQuery
2. Databricks
3. Redshift
4. Snowflake
5. dremio
6. Spark
7. PostgreSQL7
etc..
参考:CI/CDとは
アジャイルを支える体制のひとつにCI/CDというものがあり、各エンジニアの書いたコードに対するテスト・本番環境へのデプロイをある程度自動化させて開発スピードを向上させたり、小刻みにリリースを繰り返すことで万が一エラーが発生した際の原因の特定を容易にする効果があります。
参照:
FLYWHEELブログdbtとは何をするツールなのか?Hakky>データ基盤型>dbr>dbt入門
Hakky>データ基盤型>dbr>dbt入門
データ変換の効率化ツール「dbt」の概要を解説します
[dbt]生成するデータモデルの種類を変える「Materializations」を試す
データ変換ツール「dbt」で開発とテストを実装してみた
dbtを使ったELTデータパイプライン構築と運用事例 - DataEngineeringStudy
trocco_dbtとは?データ変換、データマネジメントを加速する注目のツールについて紹介
Zenn>dbtでBigQuery上に構築したデータ基盤のメタデータ管理
dbtでサポートされているデータプラットフォーム