みんなの銀行のデータ分析基盤の開発・メンテナンスしている松本です。
今回、様々な ELT ( Extract, Load, Transform ) ツールを比較して Dataform を利用することにしましたので導入経緯を紹介します。
はじめに
本記事では、BigQuery を利用するデータサイエンティスト・エンジニアチームが抱えていた、BigQuery テーブルやビューの管理・作成における運用課題を説明します。
そして、運用課題の解決策として Google Dataform(以下、Dataform)を導入に至った経緯を紹介します。
前提
- みんなの銀行の分析基盤は BigQuery を使用しています。
- BI ツールは Looker を利用しています。
- Dataform 導入前はスケジュールドクエリや、テーブルやビューの履歴管理などを目的として自社で独自開発したツールを利用していました。
課題
これまでのデータ分析基盤では、 BigQuery のスケジュールドクエリや独自開発したツールを利用して、BigQuery 内のテーブルやビューを作成・管理していました。
しかし、従来のこれらの手法では、主に以下の課題に直面していました。
課題1: スケジュールドクエリ再実行などのリカバリ工数の増加
-
影響範囲の特定と根本原因の追跡の困難さ
- エラー発生時や仕様変更時に後続プロセスへの影響範囲を正確に把握することが困難であった。
- データリネージが可視化されておらず、仕様変更時の影響範囲の特定や、問題発生時の根本原因特定に時間がかかっていた。
-
リカバリ工数の増大
- 多段テーブル化でテーブル数が増えると、リカバリ工数が大幅に増えることが予想された。
課題2: データの不整合
-
検知困難なデータ不整合の発生
- 前段のクエリが失敗しても後続のクエリがエラーにならず実行されてしまう。
- 後続のクエリが正常終了してしまうため、データ不整合が発生しても発見が困難。また、不整合の原因がどの処理にあるのかを特定するのも難しい。
-
属人的なSQLとメンテナンス性の低下
- 依存関係を定義できず、データリネージも完全に管理できていなかった。
- これはSQLのメンテナンス性低下、処理のブラックボックス化、特定担当者への負荷集中といった問題を引き起こしていた。
検討したELTツール
上記で挙げた課題を解決するためには人手では限界があったため、様々なELTツールを比較検討しました。
ツール | 概要 | メリット | デメリット |
---|---|---|---|
Google Dataform | Google Cloud上で提供されるELTツール。SQLベースでデータパイプラインを構築できる。 |
|
|
Cloud Composer (Apache Airflow) | Apache Airflowベースのフルマネージドなワークフローオーケストレーションサービス。 |
|
|
dbt (Core / Cloud) | SQLベースでデータモデリングを行うためのツール。OSSのCoreと、マネージドサービスのCloudがある。 |
|
|
某社製品 | エンタープライズ向けのELTツール。多様な機能と高い拡張性を備える。 |
|
|
Dataformを選定した理由
様々なELTツールを比較検討した結果、Dataform が私たちの課題解決に最も適していると判断し、導入を決定しました。
Dataformが提供する主なメリットと、それがどのように課題解決に繋がるかを以下に示します。
1. データパイプラインの信頼性向上と運用効率化
-
依存関係の明確化と実行制御
-
ref
関数でSQLクエリ間の依存関係をコードで明示的に定義できるため、実行順序が保証される。 - 失敗時は後続が実行されず、データの不整合やエラー連鎖を防ぐ。
-
-
データリネージ活用による迅速な問題解決
- 依存関係に基づきデータリネージを自動生成・可視化することで、影響範囲の正確な把握や問題発生時の迅速な原因特定が可能になる。
- タグ機能との組み合わせで、特定データセット群の影響範囲把握など、より高度な管理・分析もできる。
-
効率的な再実行プロセス
- ワークフロー失敗時、失敗した処理から、またはワークフロー全体を簡単に再実行できるため、リカバリ作業の時間と手間を大幅に削減し、迅速なデータ復旧を実現する。
2. 変更管理の容易化と再現性の向上
-
GitによるSQL定義のバージョン管理
- SQL定義ファイル(
.sqlx
ファイル等)をGitで管理することで、変更履歴が記録され、過去バージョンの参照や復元が容易になる。 - 結果として、変更に伴うリスクを低減し、システムの安定性と再現性を高め、リカバリ工数の削減にも繋がる。
- SQL定義ファイル(
3. 運用負荷の軽減とコストメリット
-
フルマネージドサービス
- Google Cloud のフルマネージドサービスであり、別途サーバーをメンテナンスする必要が無い。
-
無料利用
- Dataform 自体は無料で利用可能(※BigQueryの利用料は別途発生)。
-
デメリットへの対応(自動リトライ処理の不在)
- 標準で自動リトライ機能がないため、Cloud Loggingでエラーを検知・通知し、手動で再実行する運用でカバー。
- これは現状許容範囲内と判断し、今後の機能更新に期待。
今後の展望
Dataform を導入したため、いくつかの恩恵を受けることができました。
今後は、Dataformの機能を最大限に活用し、以下の取り組みを検討しています。
- Assertion 等を使用したデータ品質テストの実装
- 既存のテーブルやビューを Dataform に置き換え(影響の少ない箇所から適用予定)
- Federated Query を併用した ETL ツールとしての代替
- 自動リトライ処理の仕組みを検討・構築
おわりに
本記事では、私たちが抱えていた課題からELTツールの比較検討、そしてDataform導入に至った経緯をご紹介しました。
まだまだナレッジが溜まっていないため、次回以降の記事で工夫した点や、苦労した点などもご紹介できればと思います。