コミューン株式会社における、dbt-coreとdbt Cloudを併用したデータ処理基盤
コミューン株式会社 / Yoshi-ken
テックリード / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|---|
Team | Scheduled Job, Slim CI, defer to prod, pub/sub job trigger, エラー通知, dbt python model, dbt exposure | 10名以下 | 2023年 | B to B |
利用プラン | Team |
---|---|
利用機能 | Scheduled Job, Slim CI, defer to prod, pub/sub job trigger, エラー通知, dbt python model, dbt exposure |
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2023年 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
dbtとは
dbtは、データ変換(ETL)のプロセスをシンプルにし、データパイプラインの管理を効率化するツールです。
従来、データの変換や整形は認知負荷が高く、複雑で記憶頼りの作業が多く、ロジックの差分や不整合エラーが発生しやすいものでした。
そこでモダンデータスタックを構成できるdbtを導入することで、以下のような問題が解決されます。
データの整形・変換作業の効率化
複雑なSQLクエリの共通化やマクロを用いたループ処理やパラメータ化により、
可読性を保ったまま再利用可能なデータモデルを定義・実行できるようになります。データパイプラインの可視化と管理
モデルの依存関係を可視化し、データの流れを把握しやすくなります。
これにより、エラーの発見やトラブルシューティングが迅速に行えるようになります。CI/CDによる効率的な運用
dbtはCI/CD(継続的インテグレーション・継続的デリバリー)と組み合わせて使用することで、
データパイプラインのテストやデプロイを自動化し、品質の維持が容易になります。
さらに、データ収集からBIでの活用まで、dbtの周辺ツールがサードパーティーからも数多く提供されていてエコシステムが成熟してきております。
開発体験の良さ
VSCodeの機能拡張「dbt-power-tools」は、dbtを活用した効率的な開発を支えるための必須ツールです。
ローカル開発環境に取り入れることで、次の機能が使えます。
- どのテーブルに依存していて、どのテーブルに参照されているか図としてテーブルのリネージュが見られる
- 参照しているテーブル(モデル)のスキーマ構造と説明文がマウスホバーしたら見える
- モデル名などの補完入力が行われるので打ち間違えない
- SQLの実行結果をプレビューしたり、過去の実行結果を別のタブで開いて見比べられる
- テーブルが開発環境になければ、本番環境のDWHテーブルを参照できるdefer to prodが使える
データ品質テスト
世界中の各種データ活用企業のニーズによって生み出された、さまざまな品質テストを行うパッケージが dbt Tests Hubにて提供されています。
ユースケース毎の絞り込みがあり、目的毎に探索できる形で公開されております。
人材の教育のしやすさ
dbt Learnというオンライン講座ではビデオ学習コンテンツが充実しています。
基礎的な入門編から、応用編、運用編の範囲で、それぞれ細かなチャプター毎に受講できるので進めやすいです。
こちらのdbt 基礎コースだけでも一通り受講すればかなりの即戦力になるのでお勧めです。
dbt Cloud
実行環境のバージョンアップ運用をせずに、常に最新安定版を使えることがメリットです。
導入の背景・解決したかった問題
導入背景
BigQueryのsaved queryで1つのクエリに複数ステートメントが記載されており、冪等性がないこともありリトライや手動実行が難しい状態でした。
それらを置き換えるためにTroccoやdbt Cloudを導入し、便利な機能をこれから活用したいという段階だったと聞いています。
導入の成果
改善したかった課題はどれくらい解決されたか
- 依存関係に応じた実行順序を担保できるようになった
- テストに通ってから次のモデルを作り始めるため、壊れたデータが波及していくことがなくなった
- 定型的な処理をJinja Macroに寄せらることで、人的な運用を激減できた
- Slim CI/CDの導入によって、コードの品質管理が行き届くようになった
- SQLでは表現しきれないことはdbt python model経由でPySparkを利用することで依存関係含めて解決できた
どのような成果が得られたか
動作検証されたものが本番リリースされる仕組みが整ったことで、データ不具合に見舞われない体制となりました。
導入に向けた社内への説明
上長・チームへの説明
データをビジネスのコアとするために、データチームが拡大する前にdbtを採用しました。
運用保守の効率化や、今後のデータ活用人材の採用にもつながるだろうという狙いがあります。
活用方法
主にdbt coreの方を日常的な開発で利用しており、dbt Cloudはスケジュール実行とCI/CDの自動化で利用しています。
よく使う機能
dbt-core
- defer to prodを用いた差分モデル実行
- dbt run/test/build/run-operationコマンド
- dbt snapshotを用いたSCD Type-2の履歴テーブル化
- 3rd partyのdbt-osmosis, elementaryも活用
dbt Cloud
- dbt buildコマンドを用いた日々の定期実行
- GitHub連携によるCI/CD
ツールの良い点
Slim CI/CDを容易に使い始められる点。
これを使っているかどうかで開発生産性と心理的安全性が段違いに良くなります。
ツールの課題点
- Teamプランでは開発者ライセンスの上限が8名まで
- Teamプランではカラムリネージュが使えない
ツールを検討されている方へ
次のようなデザインパターンの観点でJinja Macroを効果的に活用することで、保守性が高く、再利用可能なdbtモデル(SQL)を書くことができます。
制約があることで、かえって一貫性のある設計が強制される面もあり、結果として、チームメンバー間での一貫性のある実装が実現できます。
- DRY (Don't Repeat Yourself)
- SQLの共通パターンをマクロとして切り出すことで重複したロジックの記述を排除できます
- 類似のコードが生み出されることを防ぎ、コードの保守性を向上させる効果があります
- パラメータ化による再利用
- マクロはパラメータを受け取れるため、同じロジックを異なる値で再利用できます
- 例えばパラメータに基づいて、テーブルを一定のルールで変換するロジックを実装できます
- カプセル化
- 複雑なSQLロジックをマクロ内に隠蔽し、シンプルなインターフェースを提供します
- 例えば課金計算などの複雑な計算ロジックなど、利用側はそのマクロを再利用するだけで利用できます
- 拡張性
- マクロのラッパーを作ったり、規定値を予めセットしたいといった、標準のTestやAdapterの挙動に手を加えられます
- 特殊な要件には、オーバーライドにより、既存の機能を変更せずに新しい振る舞いを追加できます
今後の展望
日本でのdbtコミュニティを盛り上げるべく、さまざまな便利な活用法を今後も発信していこうと思います。
2024年に発表したdbt関連のブログ記事
コミューン株式会社 / Yoshi-ken
テックリード / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
ex-TreasureData, ex-LIVESENSE 13年のSWEの経験を生かし、この7年くらいは大量データ処理・分析基盤を軸にR&D戦士をしています。
よく見られているレビュー
コミューン株式会社 / Yoshi-ken
テックリード / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
ex-TreasureData, ex-...
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法