【GCP】BigQueryでのETL開発 ~DataformのPJ導入~
レビュー投稿日の情報になります
Insight Edge / kazuki kobayashi
メンバー / フルスタックエンジニア
最終更新日投稿日
利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
ETL機能 | 10名以下 | 2024年6月 | B to B |
利用機能 | ETL機能 |
---|---|
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2024年6月 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
テーブル設計
プロジェクトでは以下の目的でテーブルを定義しました。 ETLの各処理を目的ごとに定義することで、ロジックを明確に分割し、管理を容易にしています。 今回は、Dataformで管理するテーブル以外を外部データと定義します。
テーブル一覧 | 目的 |
---|---|
マスタテーブルの DDL | マスタテーブルを定義する |
Extract ビュー | 外部データを取得する |
Transform ビュー | マスタテーブルと外部データを結合する/ データの変換・加工 |
Incremental テーブル | データの蓄積を目的とする |
I/F ビュー | Load に必要なデータのみを格納する |
導入の背景・解決したかった問題
導入背景
ツール導入前の背景
- ETL開発に関する知見や経験がない状態
- 導入対象の案件では、クラウド基盤にGoogle Cloud、データ基盤にBigQueryを採用していた。
どのような状態を目指していたか
- Google CloudやBigQueryと高い親和性を持つサービスを求めていた。
- 依存関係の管理やチームでの作業共有など、システム開発を効率化できる機能を備えた環境を実現したかった。
比較検討したサービス
- dbt
比較した軸
- BigQueryとの親和性
選定理由
- BigQueryとシームレスに接続できる。
- データパイプラインを可視化でき、全体のデータフローを効率的に把握・管理できる。
- 操作が分かりやすく、学習コストが低いユーザーインターフェースを備えている。
導入の成果
どのような成果が得られたか
- ETL開発における初期準備の工数を大幅に削減し、スムーズな開発開始を実現した。
- データフローの可視化により、開発時/レビュー時の負担が軽減され、効率的な確認作業が可能となった。
導入時の苦労・悩み
ETLツールの利用は初めてだったが、直感的な操作性によりスムーズに利用を開始できたため、大きな課題は特に見当たらなかった。
導入に向けた社内への説明
上長・チームへの説明
チーム内では、BigQueryとの高い親和性や今回のユースケースへの適合性を評価し、特に異論は出ず利用を決定した。ツール選定は開発チームに一任されていたため、追加の詳細な説明は行われなかった。
活用方法
各開発メンバーが、開発目的に応じてDataformリポジトリからワークスペースを作成し、個別に作業を進める。
よく使う機能
- ETL開発機能
- テスト機能を活用することで、null値の確認やデータ整合性の検証が容易に行える。
- JavaScriptを利用して、簡易的なロジックやカスタマイズ可能なデータ処理を実装できる。
- グラフ可視化機能
- ETLフローを視覚化し、依存関係が想定通りになっているかを開発時やレビュー時に確認できる。
- リリース構成
- リリース構成を定義することで、特定のタイミングでコンパイルを実行し、検証環境などで利用する静的なコンパイル結果を生成できる。
ツールの良い点
- BigQueryとのシームレスな接続により、データの入出力やクエリ処理を効率的に行うことができる。
- ユーザーインターフェースが直感的で、操作に関する学習コストを最小限に抑えることができる。
ツールの課題点
- Dataformでは、テーブル生成時に対象データセットが存在しない場合、自動で生成されます。しかし、複数のETL処理を並行して実行する際、一部の処理中に他の処理が未作成のデータセットに対してテーブル生成を試みることでエラーが発生します。これは開発中にのみ発生する問題であり、dependenciesを設定して依存関係を持たせることで解決することができますが、本来依存しない関係のテーブルに依存関係を持たせる必要が出てきます。
config {
type: "operations",
name: "sampleB",
hasOutput: true,
tags: ["master"],
dependencies: ["sampleA"]
}
- 運用に重点を置いた情報や事例の記事が少なく、参考資料の確保に課題がある。
ツールを検討されている方へ
Google CloudやBigQueryを日常的に利用している方であれば、ETLツールの選定時にまずDataformを検討することを強くお勧めします。特に、ETL開発時には、その高い親和性と効率的なデータパイプライン管理機能が、開発や運用において有効だと思います。
Insight Edge / kazuki kobayashi
メンバー / フルスタックエンジニア
よく見られているレビュー
Insight Edge / kazuki kobayashi
メンバー / フルスタックエンジニア
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法