dbt
ELT パイプラインを宣言型的・モジュール化して保守性を高める
#dbt_用語
https://github.com/dbt-labs/dbt-core
cloud版もある。
ELTをSQLで進めていくツール。
pythonの処理で書いていくと、手続きが入り組んでいって、可読性が落ちる。
sqlで書いていけば、宣言型の記述で可読性を保てる。
また、一般的に処理をするステージごとにdirectoryを分けて、step処理を記述できる。
ステージにより処理の分離
sqlファイルによる処理を、その処理のステージごとに
1. RawData
2. Seeds/Sources(取り込み)
3. taging(正規化)
4. Intermediate
5. Marts(データマート)
飛ばしてもたぶん大丈夫?
呼び名:
モデル:
sqlファイル1つがモデルと呼ばれる。
staging, intermediate, marts などにそのsqlファイルは置かれ、それぞれにモデルがあることになる。
Jinja機能
{{...}} でマクロ展開
Test機能
モデルごとに schema.yml で unique/not_null/accepted_values などのビルトインテストを定義できます
ドキュメント生成・Lineage機能
dbt docs generate→ dbt docs serve