DataEngineeringStudy #13に10Xの瀧本が登壇した際の資料です。
©10X, Inc. All Rights Reserved.dbtを使ったELTデータパイプライン構築と運用事例 DataEngineeringStudy#13 株式会社10X 瀧本晋也
View Slide
登壇者 - 瀧本晋也( @takimo ) - 株式会社10X所属のアナリティクスエンジニア - 前職ではプロダクトエンジニア、Webマーケティング、リテールマーケティング等々を担当 - dbt Slackコミュニティのtokyoチャンネルのチャンピオン(コミュニティオーガナイザー)
今日お話することのまとめ - dbtは小さいチームでも高度なデータモデリングとチームでの開発体制を整えられる良いツール - データ変換のツールなのでDWHを作るのはもちろん、DWHを作るだけじゃない形で使うこともできる - コミュニティが盛んなので気軽にJOIN
©10X, Inc. All Rights Reserved.10Xが取り組むStailerの紹介をさせてくださいStailerの紹介
©10X, Inc. All Rights Reserved.問題と課題に対してのアプローチ事例dbtが解決するものは何か?
こんな課題ありませんか?
その1: 影響範囲がわからない改修が難しいクエリ - BigQueryのコンソールから作れた秘伝のViewテーブルの依存関係 - なぜこのロジックになっているのかわからない処理 - テーブルが扱うデータの正常系がわからない
- データパイプラインツールのOPSまで含めた運用ができるデータエンジニアの採用が市場全体でも難易度が上がっている - 事業やプロジェクトのフェーズが変わることでデータ分析への要求が変化していくが、大元のDWHやソースデータの処理部分の修正は別のチームに依頼しなければならず社内でもリソースの確保が難しい その2: データ基盤開発メンバーの長期的な確保や採用の難しさ
- Github等のコード管理をしてくれるようなツールを導入しながら、事前に修正差分を確認し、動作に問題が無いことをチェックして反映をするといったCI/CDを導入するにはワークフローツールの知識や運用経験、またGithubを使った開発フローの知識が必要 - データテストのための統一された仕組みは少なく、導入にも知識が必要 その3: チームで品質を担保しながら開発&デプロイの体制作り
課題のまとめとdbtを使った解決のアプローチ
まずdbtとはなんなのか? - 正式名称は「data build tool」 - dbt Labs社とdbtコミュニティが開発するOSS - 拡張されたSQLを使い、ソフトウェアエンジニアリングのベストプラクティスを取り入れられる開発ツールであり、データモデリングを信頼性高く、高速に、楽しくしてくれるもの - ELTにおけるT(データ変換)を担当する
ELTとdbtの関係 - ELTとは、Extract(抽出)、Load(読み込み)、Transform(変換)の略 - 高速でかつ安価で運用ができるデータ基盤が台頭し、データ変換をロードしてから行うアプローチ - データエンジニアリングの領域からアナリストの領域にデータの管理や処理が染み出す
©10X, Inc. All Rights Reserved.10Xでどのように使われているのか10Xでのdbt導入事例
10Xでのdbt導入事例 10Xでは2系統でdbtを導入しています 1. DWHやデータマート構築のデータパイプライン 2. 前述のStailerのサービスが処理する外部データのデータ変換処理のデータパイプライン
10X事例:DWHやデータマート構築用のパイプライン
10X事例:Stailerが処理する外部データのデータ変換
©10X, Inc. All Rights Reserved.10Xでdbtが10xしてくれた事例
SQLさえ分かればアナリストでもデータモデリング開発に参加できる環境が作れた SELECT文で作る モデル処理 refを使いテーブル間の依存を自動で解釈する 結果16人がdbtの モデリングをしている
dbt runとコマンドするだけでデータパイプラインが自動で組み上がる安心感 dbt runだけで依存関係を考慮したデプロイが可能 データがおかしくなった、作り直したくなっても安心!
JinjaによるSQLの拡張とオープンソースなライブラリ Jinjaテンプレート機能を使い、SQLのコピペを防ぐ マクロを使って処理を コンポーネント化する 外部で提供されている ライブラリも利用可能
ドキュメントをデータリネージと合わせて確認できるドキュメントが作れる yamlで定義するだけでドキュメントが定義可能 デプロイされたモデルに紐づくドキュメントをホスティングしてくれる
クエリをGithubで管理し、レビューを通ったものだけデプロイできるCI/CD環境を簡単に構築できる dbt Cloudを使うと dbtが動くIDE環境でGithub フローでコード管理もできる プルリクエストを作ると自動で デプロイを試行&データテストがクリアされるかのCIが導入可能
モデル処理のSSOT化がしやすい materializedに ephemeralを指定した モデルを定義する ephemeralのモデルを参照するモデルの処理を実装する eph_datas.sql コンパイルされて実際に実行されるSQL モデルはウェアハウスに保存する際の形式として「view」「table(実テーブル)」「ephemeral(一時処理)」を定義可能
データの品質を自動でチェックしてくれる YAMLでモデルに対する テストを定義する dbt testで実行できる テストの実行結果が 見れる ※CI/CDも可能 ※スケジュール実行も可能
データモデリング人材の採用がしやすくなった SQLがベースのスキルセットなので、その他にGithubの利用経験があればワークできる データマネージメントのスキル の向上意欲が高い人が多い
ただし困っていることも
dbtを運用していて困っている点や課題 - 自由度の高さ、敷居の低さから無法地帯になりかねないのでコーディングガイドライン、レビュー、リントチェック等の導入を推奨 - dbt Cloud IDEは標準的なGithubフローでしかブランチ戦略を取れない
©10X, Inc. All Rights Reserved.まとめ
今日のまとめ - dbtは小さいチームでも高度なデータモデリングとチームでの開発体制を整えられる良いツール - データ変換のツールなのでDWHを作るのはもちろん、DWHを作るだけじゃない形で使うこともできる - コミュニティが盛んなので気軽にJOIN
dbt tokyoの紹介 日本のdbtコミュニティがあります。是非気軽に参加してみてください 日本語のドキュメントをまとめたりしています dbt Slackコミュニティ内に日本語で話せるチャンネル dbt tokyo Meetupを開催、GW開けに#3予定
Special Thanks - dbtコミュニティのメンバー - 10Xのメンバー - ゆずたそさん、小林さん