KDDIアジャイル開発センターのdbt導入事例:dbtとGitHub ActionsでシンプルなELTを実現
KDDIアジャイル開発センター株式会社 / Synohara
メンバー / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 101名〜300名
利用プラン | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
dbt Core | 10名以下 | 2023年5月 | B to B |
利用プラン | dbt Core |
---|---|
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2023年5月 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
弊社内で利用できるリソースを最大限に活用してかつまずはシンプルなアーキテクチャからということで上記のような構成となっています。
GitHub Actionsから直接dbt Coreを呼び出してSnowflakeに対してSQLを発行するといった作りです。
ソースデータは社内の他のSnowflakeアカウントからデータシェアしたものを利用しているためこのようなシンプルな構成でも実用に耐えうるものとなっています。
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
社外とのデータ連携プロジェクトの立ち上げの際にデータモデリングツールとしてdbt Coreの採用を決めました。
どのような状態を目指していたか
データモデリングを適切に行いデータ品質を担保できる状態
比較検討したサービス
- dbt Core
- dbt Cloud
- SQLMesh
比較した軸
- DWH:Snowflake
- コードホスティングサービス:GitHub Enterprise Server
- CI/CD:GitHub Actions(Self Hosted Runner利用)
という条件の中で利用できるELTツールを求めていました。
選定理由
- CI/CDへの組み込みが容易
- ネット上での日本語・英語の知見が豊富
- ELTツールとしてのデファクトスタンダードの地位を獲得しつつある
といったポイントからdbt Coreの採用を決めました。
導入の成果
dbt CoreをGitHub Actionsと組み合わせて使用することでデータモデルのコードを書いてそれをデータ基盤に反映するまでのプロセスをスムーズに行うことができています。更にGitHub Actionsの定期実行の機能を利用することで簡易的なデータパイプラインとして動作させることもできています。
またdbtのmacroを活用して作成したデータモデルをSnowflakeのアカウントへシェアすることもdbtで完結させることができました。
導入時の苦労・悩み
チームメンバーにdbt Coreの利用経験があるメンバーが少ないことが課題でしたが導入に際してdbtの研修を実施しているちゅらデータさんにお願いして研修を実施しdbt Coreについての知識を短期間で一定引き上げてプロジェクトへの導入に移ることができました。
導入に向けた社内への説明
上長・チームへの説明
プロジェクト立ち上げ時に導入を決定したこと、OSSのツール利用であったためスムーズに導入することができました。
活用方法
社外のデータと突合をセキュアに行うための各種変換処理(ハッシュ化、匿名化 etc...)を含んだデータモデリングを行っています。
よく使う機能
- データモデリング機能
主にSQLでソーステーブルからのTransformを行っています。
dbtのBest practice guides を参考にしながらオーソドックスなSource、Staging、Martの層に分けてデータモデリングを行っています。 - テスト機能
dbtには大きく分けて
・Data Tests
・Unit Tests
の2種類のテスト機能が用意されていますが、この中でData Testsの1つであるGeneric data testsを用いてデータ品質の保証を行うテストを記述しています。
ツールの良い点
- Jinjaテンプレートで拡張されたSQLでデータモデリングが行えるためPythonを扱うことに慣れたエンジニアにとっては導入への心理的障壁が低い
- ドキュメンテーションが非常に充実している
- ELTツールのデファクトスタンダードとしてネット上に知見が蓄積されている
ツールの課題点
- アップデートが頻繁にあるためプロパティの名前が変わったりして大変
ツールを検討されている方へ
データモデリングを行う上で非常に使い勝手が良いツールです(データモデリング界の十徳ナイフと勝手に呼んでいます)。
まずはお手軽にデータモデルの管理ツールとして利用するもよし、dbt snapshotやincremental modelなどの機能を活用して高度なデータモデリングを実現するもよしといった利用する開発者のレベルに応じた使い方ができるツールかと思っています。
今後の展望
- Unit Testsの活用
dbt 1.8からUnit Testsが行えるようになりました。
これまでも似たようなことができるPackageはありましたがコア機能としてUnit Testができるようになっています。
プロジェクト内である程度複雑なロジックを含んだSQLに対してこの機能が活用できるのではないかということで機能の検証を行っています。 - ワークフローオーケストレーションツールの導入
現時点ではシンプルにデータモデルの作成のみしか行っていないのでGitHub Actionsから直接dbt Coreを呼び出すアーキテクチャとしていますが今後Snowflake上にあるデータを活用した機械学習パイプラインの構築も予定しているのでより複雑なデータパイプラインの構築が行えるDagsterやAirflowのようなワークフローオーケストレーションツールの導入を行いたいと考えています。
KDDIアジャイル開発センター株式会社 / Synohara
メンバー / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 101名〜300名
よく見られているレビュー
KDDIアジャイル開発センター株式会社 / Synohara
メンバー / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 101名〜300名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法