Data Engineering Study #13 - ELT・データモデリングツール特集回
Dataformとdbtで楽するデータモデリングData Engineering Study #13 - ELT・データモデリングツール特集回na0
View Slide
自己紹介 na0Naofumi Yamada @na0fu3yデータアーキテクトbqfun.jp 管理人Dataformとdbtで楽するデータモデリング2
まとめよりよい意思決定を助けるため、データモデリングを回そうDataformやdbt Cloudを使うことで、データモデリングの余裕が生まれるはじまる前にDataformは新規登録停止中、Dataform CLIは利用可能(2022-04-06現在)Dataformとdbtで楽するデータモデリング3
はじめに様々なビジネスシーンで、様々な品質のデータが利用されている高品質なデータによる恩恵問題の早期検知より確からしい仮説施策の定量的な評価低品質なデータによるリスク間違った意思決定(MLモデルを通じた)顧客体験の悪化Dataformとdbtで楽するデータモデリング4
低品質なデータの例項目 どんなデータ? リスク完全性 欠損などで事実を表現していない 友達紹介料の付与が漏れた正確性 計測方法や入力に誤りがある メール拒否の顧客にメールを送った一意性 重複がある データ上の売上が倍になり、誤った意思決定した適時性 更新頻度が不足している プレスリリースが1週間遅れたその他 古くなったメタデータ 非推奨のデータとロジックで過剰にクーポンを配布したデータの品質はニーズと照らして定まり、ニーズに合わないなら低品質であるDataformとdbtで楽するデータモデリング5
ニーズから高品質なデータを定義する項目 ニーズ どんなデータ?正確性 DM拒否の顧客を把握する アンケート返答が正しく永続化される完全性一意性 正しい売上が計算できる 欠損や重複なく購入ログが記録される適時性 売上目標達成の翌日に記事を出す 12時間以内の遅延で売上が計算されるLineage データの出どころが検証できる 生成元までの経路がメタデータとして記録されるデータ活用のためにニーズとデータをくっつけるプロセスが重要Dataformとdbtで楽するデータモデリング6
データのモデリングデータに対するニーズを整理し、データを洗練し続けるニーズを満たすことで、次のニーズが明らかになるデータの品質保証ニーズに合ったデータを提供していることを確認し続ける1. ルールやプロファイリングを、データが満たすか検証する2. 品質の低いデータが、後続のデータを汚染しないようにパイプラインを停止するDataformとdbtで楽するデータモデリング7
Dataformやdbt Cloudでできることデータの品質保証に関する関心事を減らし、データモデリングの余裕をつくるスケジュールやログ、通知はDataformやdbt Cloudにおまかせ事前に定義したルールに基づいてデータがニーズに合っているか検証するDataformとdbtで楽するデータモデリング8
DataformDWH上のデータをSQLで使いやすくTransformするWebサービス無料新規登録停止中(2022-04-06現在)Dataformとdbtで楽するデータモデリングhttps://docs.dataform.co/introduction より画像を引用 9
Dataformとdbtで楽するデータモデリングhttps://docs.dataform.co/introduction/dataform-in-5-minutes より画像を引用 10
Dataform CLIDataformのCLIツール、登録不要で利用可能(2022-04-06現在)実行環境を用意する必要はあるが、Dataformに比べて柔軟に構成できるDataformと比べて不足する機能Git統合、データリネージドキュメント定期実行、Slack通知、ログ$ dataform runCompiling...Compiled successfully.Running...Dataset created: dataform.example [view]Dataformとdbtで楽するデータモデリング11
Dataform導入のモチベーション関心事を減らしたいDWH上でSQLを使ってデータを捏ねたいだけApache Airflowは多機能で関心事が増え過ぎるDataformとdbtで楽するデータモデリング12
Dataform導入のモチベーション関心事を減らしたい定期実行、通知、ログがほしいDataformとdbtで楽するデータモデリングhttps://docs.dataform.co/introduction/dataform-in-5-minutesより画像を引用 13
Dataform導入のモチベーション関心事を減らしたい定期実行、通知、ログがほしいデータの依存順に実行したい依存関係も見たいDataformとdbtで楽するデータモデリングhttps://github.com/dataform-co/dataform より画像を引用 14
Dataform導入の効果データモデリングに専念できるデータ品質が定義、監視できるその他の意識面の改善Dataformとdbtで楽するデータモデリング15
データモデリングに専念できるApache Airflowに比べて運用が楽データリネージを見て達成感があるSQLを知っていれば、新データの定義ができるニーズ テスト データ定義売上目標達成の翌日に記事を出すCURRENT_TIMESTAMP() - MAX(created_at)<= INTERVAL 12 HOUR SELECT ...売上が正しく計算できる uniqueKey: ["id"], nonNull: ["price"] SELECT ...Dataformとdbtで楽するデータモデリング16
データ品質が定義、監視できる簡単にテストが書けるテストを満たさないデータは下流に流れない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
その他の意識面の改善プルリクエストレビューで、ニーズとデータ定義の関係を浸透させる社内統一言語としてユビキタス言語をつくって、KPIとデータ定義を一致させるデータでニーズに応え続けるニーズを満たすことで、次のニーズが明らかになる同じようなデータでも、ニーズが異なるなら別テーブルを用意するDataformとdbtで楽するデータモデリング18
dbtDWH上のデータをSQLで使いやすくTransformするCLIツール主要な機能はDataformと同様(本資料では説明省略)Dataformとdbtで楽するデータモデリングhttps://www.getdbt.com/ より画像を引用 19
dbt ClouddbtのWebサービスプランによって有料Dataformとdbtで楽するデータモデリングhttps://docs.getdbt.com/docs/dbt-cloud/cloud-ide/the-dbt-ideより画像を引用 20
Dataform / Dataform CLI と dbt Cloud / dbt主要な機能はいずれも備えるが何を使うべきかDataformとdbtで楽するデータモデリング21
Dataform / Dataform CLIの推しエンジニア不在でも使いやすいWebサービスが無料カスタマイズせずに使いやすいDWHのSQL構文のリリースに対応しやすい機能を備えるGoogle Cloud統合で便利になるかも?(買収後の情報がない)欠点Webサービスは新規登録停止中(2022-04-06現在)CLIツールでドキュメントが生成できないAPIはあるものの、Modern Data Stackな製品との連携は控えめDataformとdbtで楽するデータモデリング22
dbt Cloud / dbtの推しエンジニアがいれば、カスタマイズで自由度が高いCLIツールだけでドキュメントが生成できるデプロイ対象の選択自由度が高いスクリプトで動作を調整できるAirbyteから呼び出せる欠点ファイル名がプロジェクトユニークで長くなりがち標準と異なることを実現する場合はSQLの外側のスクリプトと戦うDataformとdbtで楽するデータモデリング23
どちらを選ぶかDataformもdbt Cloudもある程度の要求に応えられるデータニーズを考える余裕は生まれるかが重要やりたいこと、エンジニアリングリソースを勘案2022-04-06時点、すぐに余裕を作りたいならdbt CloudがおすすめDataformが新規登録可能になったら再度評価しても良いのでは?Dataformとdbtで楽するデータモデリング24
まとめよりよい意思決定を助けるため、データモデリングを回そうDataformやdbt Cloudを使うことで、データモデリングの余裕が生まれるDataformとdbtで楽するデータモデリング25
今日話しきれなかったことお話ししましょうhttps://meety.net/matches/qXCTVClfZQtDDataformとdbtで楽するデータモデリング26