Slide 1

Slide 1 text

今さら聞けないdbtの基本LT ちゅらデータ株式会社 シニアデータエンジニア 田代 学 © 2024 Chura DATA inc. PROPRIETARY & CONFIDENTIAL.

Slide 2

Slide 2 text

AGENDA • dbtってなんぞや? • dbtってなんでみんな使ってるの? • dbt Coreとdbt Cloud • dbt の代表的なコマンド

Slide 3

Slide 3 text

自己紹介 • 田代 学(たしろ がく) • 49歳 • ‘74年産寅年 埼玉県川越市在住 • ちゅらデータ株式会社在籍(本社沖縄・フルリモート勤務、月イチ出社) • シニアデータエンジニア • データエンジニアギルドマスター • 略歴 • シャープ株式会社に新卒入社、ケータイ向けメルマガサービスなど開発運用 • 株式会社サイバーエージェントで主にサーバサイドエンジニアとして従事 • 2022年9月にちゅらデータ株式会社にJOIN

Slide 4

Slide 4 text

dbtってなんぞや

Slide 5

Slide 5 text

dbt=data build tool • Extract :データソース(基幹システム、ユーザ行動データ)から抽出 • Load:データをWH等へ投入 • Transform:データの変換・データモデリング dbtはELT(Extract、Load、Trasform)のTを担当するツールです

Slide 6

Slide 6 text

以前はETL、今はELT • 昔はWH製品がめちゃ高かった • なので、入れるデータ量を絞るために、T(変換)してからL(投入)してた • ELTの利点 • 抽出(E)が単純→全量取り込みでいい! • データマートなどで問題が発生した際に、原因切り分けがやりやすい • ETLの場合、T(変換)してWHに入ってくるので、Tで問題が出たら・・・・ • わかるかボケェぇぇぇぇ • データソースの担当者に聞きにいかねばならない WH製品、Storageのコストが激下がりしたのが大きい

Slide 7

Slide 7 text

dbtってなんでみんな使ってるの?

Slide 8

Slide 8 text

ソフトウェア・エンジニアリングの叡智が使える • dbt導入前 • SQLの中の定形ロジックが、コピペで色んなところに散在・・・・ • dbt導入後 • 一箇所にまとめられる(マクロ) • Git管理できる • CI/CDが容易 • リリースサイクルが爆速になる • 問題が起きても、解決までの時間が短縮できる ロジックが使い回せる(重複排除)

Slide 9

Slide 9 text

順序を考えなくていい • dbt導入前 • SQLの実行順を考えて、スケジューリング(cron)を決めねば・・・ • dbt導入後 • DAG、順番を勝手に考慮してくれます DAG(有向非巡回グラフ)

Slide 10

Slide 10 text

リネージがかってに生成される データの上流→下流で、どのデータがどこに行くかが表現できる

Slide 11

Slide 11 text

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(順番期にしなくていい)、リネージ が実現できている

Slide 12

Slide 12 text

テストがやりやすい① • データ品質テスト • Singular Test : 起きないはずのSELECTを書く、adhocなSELECT • Generic Test:はじめから用意されてる規定のテスト • unique, not_null, accepted_values, relationship 【運用】データ品質テストがやりやすい

Slide 13

Slide 13 text

テストがやりやすい② • ロジックテスト • v.1.8 でdbt Coreへ導入予定 • datamocktool • dbt-unit-testing • DATUM STUDIO謹製の単体テストライブラリあり • in のcsv と outのcsv を定義してseedで取込み、変換後正しいか差分比較する 【開発】ユニット(ロジック)テストがやりやすい

Slide 14

Slide 14 text

ライブラリが豊富、エコシステムが素敵 • dbt_utils • codegen • dbt_project_evaluator • dbt_expectations • elementary • dbt-unit-testing, dbt_datamocktool コミュニティが活発で、日々便利なライブラリが。大体あります

Slide 15

Slide 15 text

採用も容易?! • 一旦、dbtの仕組みを作ってしまえば・・・・・ • SQL(もっというとSELECT句)が書ければいける! • CREATE TABLEとかしなくていい • マートを作ったりするのに • データエンジニアではなく • データアナリスト(SQLがかける)でもデキる • → 単価も抑えられる データアナリストでも(?)データパイプライン作れる

Slide 16

Slide 16 text

dbtCoreとdbtCloud

Slide 17

Slide 17 text

dbtCore(OSS)とdbtCloud(SaaS) • OSS版のdbtCore • エンプラ系でセキュリティ要件(PrivateLinkではないとだめ)みたいなの • 実行環境は自前で • SaaS版のdbtCloud • マネージド • 実行環境もすでにある • git連携が容易 ※dbtCore と dbtCloudのハイブリッドもあり dbtには2種類あります

Slide 18

Slide 18 text

dbt の代表的なコマンド

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

まとめ

Slide 21

Slide 21 text

dbtをもっと使おう! • データ界隈では、すでにデファクト • 開発のアジリティが爆上がり • CI/CDも容易なので、どんどん開発できる、修正できる、品質が上がる!