Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

登壇者
 - 瀧本晋也( @takimo )
 - 株式会社10X所属のアナリティクスエンジニア
 - 前職ではプロダクトエンジニア、Webマーケ ティング、リテールマーケティング等々を担当
 - dbt Slackコミュニティのtokyoチャンネルの チャンピオン(コミュニティオーガナイザー)


Slide 3

Slide 3 text

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


Slide 4

Slide 4 text

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


Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

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


Slide 10

Slide 10 text

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


Slide 11

Slide 11 text

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


Slide 12

Slide 12 text

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


Slide 13

Slide 13 text

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


Slide 14

Slide 14 text

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


Slide 15

Slide 15 text

まずdbtとはなんなのか?
 - 正式名称は「data build tool」
 - dbt Labs社とdbtコミュニティが開発するOSS
 - 拡張されたSQLを使い、ソフトウェアエンジニア リングのベストプラクティスを取り入れられる開 発ツールであり、データモデリングを信頼性高 く、高速に、楽しくしてくれるもの
 - ELTにおけるT(データ変換)を担当する


Slide 16

Slide 16 text

ELTとdbtの関係
 - ELTとは、Extract(抽出)、 Load(読み込み)、 Transform(変換)の略
 - 高速でかつ安価で運用がで きるデータ基盤が台頭し、 データ変換をロードしてから 行うアプローチ
 - データエンジニアリングの領 域からアナリストの領域に データの管理や処理が染み 出す


Slide 17

Slide 17 text

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


Slide 18

Slide 18 text

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


Slide 19

Slide 19 text

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


Slide 20

Slide 20 text

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


Slide 21

Slide 21 text

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


Slide 22

Slide 22 text

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


Slide 23

Slide 23 text

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


Slide 24

Slide 24 text

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


Slide 25

Slide 25 text

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


Slide 26

Slide 26 text

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


Slide 27

Slide 27 text

モデル処理のSSOT化がしやすい
 materializedに
 ephemeralを指定した
 モデルを定義する
 ephemeralのモデルを参 照するモデルの処理を実 装する
 eph_datas.sql
 コンパイルされて実際に 実行されるSQL
 モデルはウェアハウスに保存する際の形式として「view」「table(実テーブル)」「ephemeral (一時処理)」を定義可能


Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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


Slide 30

Slide 30 text

ただし困っていることも


Slide 31

Slide 31 text

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


Slide 32

Slide 32 text

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


Slide 33

Slide 33 text

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


Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

dbt tokyoの紹介
 日本のdbtコミュニティがあります。是非気軽に参加してみてくださ い
 日本語のドキュメントをまとめ たりしています
 dbt Slackコミュニティ内に日本 語で話せるチャンネル
 dbt tokyo Meetupを開催、 GW開けに#3予定


Slide 36

Slide 36 text

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