$30 off During Our Annual Pro Sale. View Details »

今さら聞けないdbtの基本LT

Gaku TASHIRO
January 23, 2024

 今さら聞けないdbtの基本LT

dbt(data build tool)はもはやデータ領域ではデファクトスタンダードになりつつあります
ここ1〜2年ぐらいで急速に発展したdbtですが、なんで使ってるの?なんでデファクト?とかって疑問あるかと思います。

なので社内勉強会向けに作ったdbtの基本のき 的なLTを作りましたので放流します!

Gaku TASHIRO

January 23, 2024
Tweet

More Decks by Gaku TASHIRO

Other Decks in Technology

Transcript

  1. 自己紹介 • 田代 学(たしろ がく) • 49歳 • ‘74年産寅年 埼玉県川越市在住

    • ちゅらデータ株式会社在籍(本社沖縄・フルリモート勤務、月イチ出社) • シニアデータエンジニア • データエンジニアギルドマスター • 略歴 • シャープ株式会社に新卒入社、ケータイ向けメルマガサービスなど開発運用 • 株式会社サイバーエージェントで主にサーバサイドエンジニアとして従事 • 2022年9月にちゅらデータ株式会社にJOIN
  2. 以前はETL、今はELT • 昔はWH製品がめちゃ高かった • なので、入れるデータ量を絞るために、T(変換)してからL(投入)してた • ELTの利点 • 抽出(E)が単純→全量取り込みでいい! •

    データマートなどで問題が発生した際に、原因切り分けがやりやすい • ETLの場合、T(変換)してWHに入ってくるので、Tで問題が出たら・・・・ • わかるかボケェぇぇぇぇ • データソースの担当者に聞きにいかねばならない WH製品、Storageのコストが激下がりしたのが大きい
  3. ソフトウェア・エンジニアリングの叡智が使える • dbt導入前 • SQLの中の定形ロジックが、コピペで色んなところに散在・・・・ • dbt導入後 • 一箇所にまとめられる(マクロ) •

    Git管理できる • CI/CDが容易 • リリースサイクルが爆速になる • 問題が起きても、解決までの時間が短縮できる ロジックが使い回せる(重複排除)
  4. dbtの根幹:ref, source select * from {{ source(‘staging’, ‘employees’) }} source

    : データの源泉 ref : dbtのモデル名(テーブル名) with customers as ( select * from {{ ref('stg_customers') }} ), orders as ( select * from {{ ref('stg_orders') }} ), ... この仕組みのお陰で、 DAG(順番期にしなくていい)、リネージ が実現できている
  5. テストがやりやすい① • データ品質テスト • Singular Test : 起きないはずのSELECTを書く、adhocなSELECT • Generic

    Test:はじめから用意されてる規定のテスト • unique, not_null, accepted_values, relationship 【運用】データ品質テストがやりやすい
  6. テストがやりやすい② • ロジックテスト • v.1.8 でdbt Coreへ導入予定 • datamocktool •

    dbt-unit-testing • DATUM STUDIO謹製の単体テストライブラリあり • in のcsv と outのcsv を定義してseedで取込み、変換後正しいか差分比較する 【開発】ユニット(ロジック)テストがやりやすい
  7. ライブラリが豊富、エコシステムが素敵 • dbt_utils • codegen • dbt_project_evaluator • dbt_expectations •

    elementary • dbt-unit-testing, dbt_datamocktool コミュニティが活発で、日々便利なライブラリが。大体あります
  8. 採用も容易?! • 一旦、dbtの仕組みを作ってしまえば・・・・・ • SQL(もっというとSELECT句)が書ければいける! • CREATE TABLEとかしなくていい • マートを作ったりするのに

    • データエンジニアではなく • データアナリスト(SQLがかける)でもデキる • → 単価も抑えられる データアナリストでも(?)データパイプライン作れる
  9. dbtCore(OSS)とdbtCloud(SaaS) • OSS版のdbtCore • エンプラ系でセキュリティ要件(PrivateLinkではないとだめ)みたいなの • 実行環境は自前で • SaaS版のdbtCloud •

    マネージド • 実行環境もすでにある • git連携が容易 ※dbtCore と dbtCloudのハイブリッドもあり dbtには2種類あります
  10. run, test, docs, seed, snapshot • run : モデル(テーブル)を作ります •

    test : データ品質テストをやります • docs : ドキュメントを生成してくれます • seed : csvなどを取り込みます • snapshot : データの断面取ってくれます もっといっぱいあります、代表的なものだけピックアップ