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

dbtを使ったELTデータパイプライン構築と運用事例 - DataEngineeringStudy #13

10xinc
April 06, 2022
2.6k

dbtを使ったELTデータパイプライン構築と運用事例 - DataEngineeringStudy #13

DataEngineeringStudy #13に10Xの瀧本が登壇した際の資料です。

10xinc

April 06, 2022
Tweet

Transcript

  1. ©10X, Inc. All Rights Reserved. dbtを使ったELTデータパイプライン構築と運 用事例 
 DataEngineeringStudy#13 株式会社10X

    瀧本晋也
  2. 登壇者
 - 瀧本晋也( @takimo )
 - 株式会社10X所属のアナリティクスエンジニア
 - 前職ではプロダクトエンジニア、Webマーケ ティング、リテールマーケティング等々を担当


    - dbt Slackコミュニティのtokyoチャンネルの チャンピオン(コミュニティオーガナイザー)

  3. 今日お話することのまとめ
 - dbtは小さいチームでも高度なデータモデリングとチームでの開 発体制を整えられる良いツール
 - データ変換のツールなのでDWHを作るのはもちろん、DWHを作 るだけじゃない形で使うこともできる
 - コミュニティが盛んなので気軽にJOIN


  4. ©10X, Inc. All Rights Reserved. 10Xが取り組むStailerの紹介をさせてください Stailerの紹介


  5. None
  6. None
  7. None
  8. None
  9. ©10X, Inc. All Rights Reserved. 問題と課題に対してのアプローチ事例 dbtが解決するものは何か?


  10. こんな課題ありませんか?


  11. その1:
 影響範囲がわからない改修が難しいクエリ
 - BigQueryのコンソールから作れた秘 伝のViewテーブルの依存関係
 - なぜこのロジックになっているのか わからない処理
 - テーブルが扱うデータの正常系が

    わからない

  12. - データパイプラインツールのOPSまで含めた 運用ができるデータエンジニアの採用が市場 全体でも難易度が上がっている
 - 事業やプロジェクトのフェーズが変わることで データ分析への要求が変化していくが、大元 のDWHやソースデータの処理部分の修正は 別のチームに依頼しなければならず社内でも リソースの確保が難しい


    その2:
 データ基盤開発メンバーの長期的な確保や採用の難しさ

  13. - Github等のコード管理をしてくれるようなツー ルを導入しながら、事前に修正差分を確認 し、動作に問題が無いことをチェックして反映 をするといったCI/CDを導入するにはワーク フローツールの知識や運用経験、またGithub を使った開発フローの知識が必要
 - データテストのための統一された仕組みは少 なく、導入にも知識が必要


    その3:
 チームで品質を担保しながら開発&デプロイの体制作り

  14. 課題のまとめとdbtを使った解決のアプローチ


  15. まずdbtとはなんなのか?
 - 正式名称は「data build tool」
 - dbt Labs社とdbtコミュニティが開発するOSS
 - 拡張されたSQLを使い、ソフトウェアエンジニア

    リングのベストプラクティスを取り入れられる開 発ツールであり、データモデリングを信頼性高 く、高速に、楽しくしてくれるもの
 - ELTにおけるT(データ変換)を担当する

  16. ELTとdbtの関係
 - ELTとは、Extract(抽出)、 Load(読み込み)、 Transform(変換)の略
 - 高速でかつ安価で運用がで きるデータ基盤が台頭し、 データ変換をロードしてから 行うアプローチ


    - データエンジニアリングの領 域からアナリストの領域に データの管理や処理が染み 出す

  17. ©10X, Inc. All Rights Reserved. 10Xでどのように使われているのか 10Xでのdbt導入事例


  18. 10Xでのdbt導入事例
 10Xでは2系統でdbtを導入しています
 1. DWHやデータマート構築のデータパイプライン
 2. 前述のStailerのサービスが処理する外部データのデータ変 換処理のデータパイプライン


  19. 10X事例:DWHやデータマート構築用のパイプライン


  20. 10X事例:Stailerが処理する外部データのデータ変換


  21. ©10X, Inc. All Rights Reserved. 10Xでdbtが10xしてくれた事例


  22. SQLさえ分かればアナリストでもデータモデリング開発に参加で きる環境が作れた
 SELECT文で作る
 モデル処理
 refを使いテーブル間の依存を自動 で解釈する
 結果16人がdbtの
 モデリングをしている


  23. dbt runとコマンドするだけでデータパイプラインが自動で組み上 がる安心感
 dbt runだけで依存関係を考慮した デプロイが可能
 データがおかしくなった、作り直し たくなっても安心!


  24. JinjaによるSQLの拡張とオープンソースなライブラリ
 Jinjaテンプレート機能を使い、SQLの コピペを防ぐ
 マクロを使って処理を
 コンポーネント化する
 外部で提供されている
 ライブラリも利用可能


  25. ドキュメントをデータリネージと合わせて確認できるドキュメント が作れる
 yamlで定義するだけでドキュメント が定義可能
 デプロイされたモデルに紐づくド キュメントをホスティングしてくれる


  26. クエリをGithubで管理し、レビューを通ったものだけデプロイでき るCI/CD環境を簡単に構築できる
 dbt Cloudを使うと
 dbtが動くIDE環境でGithub
 フローでコード管理もできる
 プルリクエストを作ると自動で
 デプロイを試行&データテストがクリ アされるかのCIが導入可能


  27. モデル処理のSSOT化がしやすい
 materializedに
 ephemeralを指定した
 モデルを定義する
 ephemeralのモデルを参 照するモデルの処理を実 装する
 eph_datas.sql
 コンパイルされて実際に 実行されるSQL


    モデルはウェアハウスに保存する際の形式として「view」「table(実テーブル)」「ephemeral (一時処理)」を定義可能

  28. データの品質を自動でチェックしてくれる
 YAMLでモデルに対する
 テストを定義する
 dbt testで実行できる
 テストの実行結果が
 見れる
 ※CI/CDも可能
 ※スケジュール実行も可能

  29. データモデリング人材の採用がしやすくなった
 SQLがベースのスキルセットなの で、その他にGithubの利用経験が あればワークできる
 データマネージメントのスキル
 の向上意欲が高い人が多い


  30. ただし困っていることも


  31. dbtを運用していて困っている点や課題
 - 自由度の高さ、敷居の低さから無法地帯になりかねないので コーディングガイドライン、レビュー、リントチェック等の導入を推 奨
 - dbt Cloud IDEは標準的なGithubフローでしかブランチ戦略を取 れない


  32. ©10X, Inc. All Rights Reserved. まとめ


  33. 今日のまとめ
 - dbtは小さいチームでも高度なデータモデリングとチームでの開 発体制を整えられる良いツール
 - データ変換のツールなのでDWHを作るのはもちろん、DWHを作 るだけじゃない形で使うこともできる
 - コミュニティが盛んなので気軽にJOIN


  34. None
  35. dbt tokyoの紹介
 日本のdbtコミュニティがあります。是非気軽に参加してみてくださ い
 日本語のドキュメントをまとめ たりしています
 dbt Slackコミュニティ内に日本 語で話せるチャンネル
 dbt

    tokyo Meetupを開催、 GW開けに#3予定

  36. Special Thanks
 - dbtコミュニティのメンバー
 - 10Xのメンバー
 - ゆずたそさん、小林さん