Slide 1

Slide 1 text

Dataformとdbtで楽するデータモデリング Data Engineering Study #13 - ELT・データモデリングツール特集回 na0

Slide 2

Slide 2 text

自己紹介 na0 Naofumi Yamada @na0fu3y データアーキテクト bqfun.jp 管理人 Dataformとdbtで楽するデータモデリング 2

Slide 3

Slide 3 text

まとめ よりよい意思決定を助けるため、データモデリングを回そう Dataformやdbt Cloudを使うことで、データモデリングの余裕が生まれる はじまる前に Dataformは新規登録停止中、Dataform CLIは利用可能(2022-04-06現在) Dataformとdbtで楽するデータモデリング 3

Slide 4

Slide 4 text

はじめに 様々なビジネスシーンで、様々な品質のデータが利用されている 高品質なデータによる恩恵 問題の早期検知 より確からしい仮説 施策の定量的な評価 低品質なデータによるリスク 間違った意思決定 (MLモデルを通じた)顧客体験の悪化 Dataformとdbtで楽するデータモデリング 4

Slide 5

Slide 5 text

低品質なデータの例 項目 どんなデータ? リスク 完全性 欠損などで事実を表現していない 友達紹介料の付与が漏れた 正確性 計測方法や入力に誤りがある メール拒否の顧客にメールを送った 一意性 重複がある データ上の売上が倍になり、 誤った意思決定した 適時性 更新頻度が不足している プレスリリースが1週間遅れた その他 古くなったメタデータ 非推奨のデータとロジックで 過剰にクーポンを配布した データの品質はニーズと照らして定まり、ニーズに合わないなら低品質である Dataformとdbtで楽するデータモデリング 5

Slide 6

Slide 6 text

ニーズから高品質なデータを定義する 項目 ニーズ どんなデータ? 正確性 DM拒否の顧客を把握する アンケート返答が正しく永続化される 完全性 一意性 正しい売上が計算できる 欠損や重複なく購入ログが記録される 適時性 売上目標達成の翌日に記事を出す 12時間以内の遅延で売上が計算される Lineage データの出どころが検証できる 生成元までの経路が メタデータとして記録される データ活用のためにニーズとデータをくっつけるプロセスが重要 Dataformとdbtで楽するデータモデリング 6

Slide 7

Slide 7 text

データのモデリング データに対するニーズを整理し、データを洗練し続ける ニーズを満たすことで、次のニーズが明らかになる データの品質保証 ニーズに合ったデータを提供していることを確認し続ける 1. ルールやプロファイリングを、データが満たすか検証する 2. 品質の低いデータが、後続のデータを汚染しないようにパイプラインを停止する Dataformとdbtで楽するデータモデリング 7

Slide 8

Slide 8 text

Dataformやdbt Cloudでできること データの品質保証に関する関心事を減らし、データモデリングの余裕をつくる スケジュールやログ、通知はDataformやdbt Cloudにおまかせ 事前に定義したルールに基づいてデータがニーズに合っているか検証する Dataformとdbtで楽するデータモデリング 8

Slide 9

Slide 9 text

Dataform DWH上のデータをSQLで使いやす くTransformするWebサービス 無料 新規登録停止中(2022-04-06現 在) Dataformとdbtで楽するデータモデリング https://docs.dataform.co/introduction より画像を引用 9

Slide 10

Slide 10 text

Dataformとdbtで楽するデータモデリング https://docs.dataform.co/introduction/dataform-in-5-minutes より画像を引用 10

Slide 11

Slide 11 text

Dataform CLI DataformのCLIツール、登録不要で利用可能(2022-04-06現在) 実行環境を用意する必要はあるが、Dataformに比べて柔軟に構成できる Dataformと比べて不足する機能 Git統合、データリネージドキュメント 定期実行、Slack通知、ログ $ dataform run Compiling... Compiled successfully. Running... Dataset created: dataform.example [view] Dataformとdbtで楽するデータモデリング 11

Slide 12

Slide 12 text

Dataform導入のモチベーション 関心事を減らしたい DWH上でSQLを使ってデータを捏ねたいだけ Apache Airflowは多機能で関心事が増え過ぎる Dataformとdbtで楽するデータモデリング 12

Slide 13

Slide 13 text

Dataform導入のモチベーション 関心事を減らしたい 定期実行、通知、ログがほしい Dataformとdbtで楽するデータモデリング https://docs.dataform.co/introduction/dataform-in-5-minutes より画像を引用 13

Slide 14

Slide 14 text

Dataform導入のモチベーション 関心事を減らしたい 定期実行、通知、ログがほしい データの依存順に実行したい 依存関係も見たい Dataformとdbtで楽するデータモデリング https://github.com/dataform-co/dataform より画像を引用 14

Slide 15

Slide 15 text

Dataform導入の効果 データモデリングに専念できる データ品質が定義、監視できる その他の意識面の改善 Dataformとdbtで楽するデータモデリング 15

Slide 16

Slide 16 text

データモデリングに専念できる Apache Airflowに比べて運用が楽 データリネージを見て達成感がある SQLを知っていれば、新データの定義ができる ニーズ テスト データ定義 売上目標達成の 翌日に記事を出す CURRENT_TIMESTAMP() - MAX(created_at) <= INTERVAL 12 HOUR SELECT ... 売上が正しく計算できる uniqueKey: ["id"], nonNull: ["price"] SELECT ... Dataformとdbtで楽するデータモデリング 16

Slide 17

Slide 17 text

データ品質が定義、監視できる 簡単にテストが書ける テストを満たさないデータは下流に流れないCuircuit Breakerパターン config { type: "table", assertions: { uniqueKey: ["user_id"], nonNull: ["user_id", "customer_id"], rowConditions: [ 'signup_date is null or signup_date > "2019-01-01"', 'email like "%@%.%"' ] } } select ... Dataformとdbtで楽するデータモデリング 17

Slide 18

Slide 18 text

その他の意識面の改善 プルリクエストレビューで、ニーズとデータ定義の関係を浸透させる 社内統一言語としてユビキタス言語をつくって、KPIとデータ定義を一致させる データでニーズに応え続ける ニーズを満たすことで、次のニーズが明らかになる 同じようなデータでも、ニーズが異なるなら別テーブルを用意する Dataformとdbtで楽するデータモデリング 18

Slide 19

Slide 19 text

dbt DWH上のデータをSQLで使いやす くTransformするCLIツール 主要な機能はDataformと同様 (本資料では説明省略) Dataformとdbtで楽するデータモデリング https://www.getdbt.com/ より画像を引用 19

Slide 20

Slide 20 text

dbt Cloud dbtのWebサービス プランによって有料 Dataformとdbtで楽するデータモデリング https://docs.getdbt.com/docs/dbt-cloud/cloud-ide/the-dbt-ide より画像を引用 20

Slide 21

Slide 21 text

Dataform / Dataform CLI と dbt Cloud / dbt 主要な機能はいずれも備えるが何を使うべきか Dataformとdbtで楽するデータモデリング 21

Slide 22

Slide 22 text

Dataform / Dataform CLIの推し エンジニア不在でも使いやすい Webサービスが無料 カスタマイズせずに使いやすい DWHのSQL構文のリリースに対応しやすい機能を備える Google Cloud統合で便利になるかも?(買収後の情報がない) 欠点 Webサービスは新規登録停止中(2022-04-06現在) CLIツールでドキュメントが生成できない APIはあるものの、Modern Data Stackな製品との連携は控えめ Dataformとdbtで楽するデータモデリング 22

Slide 23

Slide 23 text

dbt Cloud / dbtの推し エンジニアがいれば、カスタマイズで自由度が高い CLIツールだけでドキュメントが生成できる デプロイ対象の選択自由度が高い スクリプトで動作を調整できる Airbyteから呼び出せる 欠点 ファイル名がプロジェクトユニークで長くなりがち 標準と異なることを実現する場合はSQLの外側のスクリプトと戦う Dataformとdbtで楽するデータモデリング 23

Slide 24

Slide 24 text

どちらを選ぶか Dataformもdbt Cloudもある程度の要求に応えられる データニーズを考える余裕は生まれるかが重要 やりたいこと、エンジニアリングリソースを勘案 2022-04-06時点、すぐに余裕を作りたいならdbt Cloudがおすすめ Dataformが新規登録可能になったら再度評価しても良いのでは? Dataformとdbtで楽するデータモデリング 24

Slide 25

Slide 25 text

まとめ よりよい意思決定を助けるため、データモデリングを回そう Dataformやdbt Cloudを使うことで、データモデリングの余裕が生まれる Dataformとdbtで楽するデータモデリング 25

Slide 26

Slide 26 text

今日話しきれなかったこと お話ししましょう https://meety.net/matches/qXCTVClfZ QtD Dataformとdbtで楽するデータモデリング 26