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

Dataformとdbtで楽するデータモデリング

na0
April 06, 2022

 Dataformとdbtで楽するデータモデリング

Data Engineering Study #13 - ELT・データモデリングツール特集回

na0

April 06, 2022
Tweet

More Decks by na0

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. データ品質が定義、監視できる
    簡単にテストが書ける
    テストを満たさないデータは下流に流れない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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide