データ加工パイプラインに用いる dbt
株式会社estie / Ryosuke839
テックリード / テックリード
利用プラン | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
dbt Core | 10名以下 | 2023年9月 | B to B |
利用プラン | dbt Core |
---|---|
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2023年9月 |
事業形態 | B to B |
アーキテクチャ
導入の背景・解決したかった問題
導入背景
estie のデータマネジメント部でソフトウェアエンジニアをしている @Ryosuke839 です。
ツール導入前の課題
estieでは、不動産の物件や募集情報を50社以上の不動産デベロッパー、管理会社、仲介会社等から取得し、匿名化や名寄せなどの処理を行ったうえでプロダクトで用いるデータを生成するデータパイプラインを構築しています。
2023 年にはデータパイプラインのデータ置き場として Snowflake を導入しました。(blog post) しかしこの段階ではデータ移送を Python スクリプトで行っており、左から右にデータを流すだけでもクラスを書きタスクを定義し…という作業が必要になっていました。ちょうどプロダクトがたくさん生まれる時期とも重なり、チームの仕事をスケールさせる障壁にもなっていました。 一方データパイプラインでは複雑なデータ加工を行う処理も混在しており、一般的に Snowflake や dbt が活用される分析基盤よりも実行できる処理に高い自由度を必要としていました。 また、Snowflake で強制されなくなったテーブル間の関係のテストは宙に浮いたままになっており、データパイプラインとしては重要な一貫性の保証ができない状態となっていました。
どのような状態を目指していたか
- シンプルなデータ移送が簡潔に書ける
- 名寄せなどの複雑な処理でも記述できる
- データモデルにテストを付随させられる
以上を満たしたツールを必要としていました。
導入の成果
改善したかった課題はどれくらい解決されたか
当初の目的であるシンプルな移送処理の置き換えやテストの追加はすんなり解決されました。 一方複雑なモデルについては、導入初期は循環参照があるなど dbt に置き換えられる処理は多くはなかったのですが、処理の側を dbt で表現できる形に沿わせていくことで置き換えが進み、さらに処理がシンプルになるという成果を得られました。
どのような成果が得られたか
- シンプルな処理を実装する際の速度が上がった
- (副次的に)dbt で記述できるよう処理を見直すことでパイプラインがシンプルになった
- パイプライン全体のリネージが自動生成されるようになり、運用時の調査などが楽になった
- data test や model contract といったテストによって信頼性を担保できるようになった
導入に向けた社内への説明
上長・チームへの説明
dbt Core と dbt Cloud のどちらを使うかという議論はあったものの、スモールスタートで dbt Core を社内分析基盤を提供するチームから運用してみるという形で導入が始まりました。 その後社内ハッカソンでデータパイプラインも一定 dbt で置き換えられるということが示され、データマネジメント部の方針として既存のデータパイプラインを dbt で置き換えていくこととなりました。
データマネジメント部内では Python と SQL が特に馴染みのある言語でしたが、dbt Snowflake では Python model と SQL model に対応しているという点もプラスに働きました。
活用方法
- データ加工パイプライン
- データ分析パイプライン
よく使う機能
- dbt run
データ加工に用いており、view と table が混在しています
毎日定時実行するほか、ワンショットで実行するモデルもあります - dbt test
毎日の定時実行でデータの内容をテストしています
CI で動かすテストもあります - データリネージの生成
dbt docs で生成したデータリネージとドキュメントをデータパイプラインのドキュメントとしています
ツールの良い点
- dbt Core は OSS であるため全ての挙動を把握できる
- Elementary OSS など便利なプラグインが存在する
- 動作を拡張し、独自のテストフレームワークを実装することもできる (blog post)
ツールの課題点
- dbt Core は dbt Cloud と比べると新規機能の実装が遅くなりがち
株式会社estie / Ryosuke839
テックリード / テックリード
よく見られているレビュー
株式会社estie / Ryosuke839
テックリード / テックリード
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法