1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ELT ( Extract, Load, Transform ) ツールを比較して Dataform を選定した

Posted at

みんなの銀行のデータ分析基盤の開発・メンテナンスしている松本です。
今回、様々な ELT ( Extract, Load, Transform ) ツールを比較して Dataform を利用することにしましたので導入経緯を紹介します。

はじめに

本記事では、BigQuery を利用するデータサイエンティスト・エンジニアチームが抱えていた、BigQuery テーブルやビューの管理・作成における運用課題を説明します。
そして、運用課題の解決策として Google Dataform(以下、Dataform)を導入に至った経緯を紹介します。

前提

  • みんなの銀行の分析基盤は BigQuery を使用しています。
  • BI ツールは Looker を利用しています。
  • Dataform 導入前はスケジュールドクエリや、テーブルやビューの履歴管理などを目的として自社で独自開発したツールを利用していました。

課題

これまでのデータ分析基盤では、 BigQuery のスケジュールドクエリや独自開発したツールを利用して、BigQuery 内のテーブルやビューを作成・管理していました。
しかし、従来のこれらの手法では、主に以下の課題に直面していました。

課題1: スケジュールドクエリ再実行などのリカバリ工数の増加

  • 影響範囲の特定と根本原因の追跡の困難さ
    • エラー発生時や仕様変更時に後続プロセスへの影響範囲を正確に把握することが困難であった。
    • データリネージが可視化されておらず、仕様変更時の影響範囲の特定や、問題発生時の根本原因特定に時間がかかっていた。
  • リカバリ工数の増大
    • 多段テーブル化でテーブル数が増えると、リカバリ工数が大幅に増えることが予想された。

課題2: データの不整合

  • 検知困難なデータ不整合の発生
    • 前段のクエリが失敗しても後続のクエリがエラーにならず実行されてしまう。
    • 後続のクエリが正常終了してしまうため、データ不整合が発生しても発見が困難。また、不整合の原因がどの処理にあるのかを特定するのも難しい。
  • 属人的なSQLとメンテナンス性の低下
    • 依存関係を定義できず、データリネージも完全に管理できていなかった。
    • これはSQLのメンテナンス性低下、処理のブラックボックス化、特定担当者への負荷集中といった問題を引き起こしていた。

Screenshot 2025-08-15 at 16.27.48.png

検討したELTツール

上記で挙げた課題を解決するためには人手では限界があったため、様々なELTツールを比較検討しました。

ツール 概要 メリット デメリット
Google Dataform Google Cloud上で提供されるELTツール。SQLベースでデータパイプラインを構築できる。
  • Google Cloudフルマネージドでインフラ管理不要
  • Dataform自体の利用は無料(※BigQuery利用料は別途)
  • SQLベースで学習コストが低い
  • データリネージの自動生成・可視化
  • Git連携によるバージョン管理が標準で可能
  • 基本的なデータ品質テスト(Assertion)を記述できる
  • 標準でジョブの自動リトライ機能がないため、失敗時は手動実行が必要
  • ドキュメントや機能は発展途上
Cloud Composer (Apache Airflow) Apache Airflowベースのフルマネージドなワークフローオーケストレーションサービス。
  • PythonでSQLでは書きにくい複雑な処理が可能
  • 非構造化データ(GCSやS3)も扱える
  • 豊富なオペレーターで様々なサービスと連携可能
  • Airflowの学習・運用コストが高い
  • 定期的なアップデート対応が必要
dbt (Core / Cloud) SQLベースでデータモデリングを行うためのツール。OSSのCoreと、マネージドサービスのCloudがある。
  • 失敗したジョブからの再実行が可能
  • 高度なテスト機能やドキュメント生成機能
  • データリネージの自動生成・可視化
  • チュートリアルが豊富
  • dbt Core: 別途、実行環境(サーバー)の管理が必要
  • dbt Cloud: チームで利用するには有償プランが必要
  • Jinjaテンプレートの学習が別途必要
某社製品 エンタープライズ向けのELTツール。多様な機能と高い拡張性を備える。
  • GUIベースで開発できるため、SQLに不慣れでも扱いやすい
  • 非常に多くの接続コネクタ
  • カタログツールにはこの会社の製品を採用している
  • ライセンス費用が比較的高価
  • Git連携など一部機能が有償プランでのみ提供
  • GUIベースのため厳密なコードでのバージョン管理が難しい場合がある

Dataformを選定した理由

様々なELTツールを比較検討した結果、Dataform が私たちの課題解決に最も適していると判断し、導入を決定しました。

Dataformが提供する主なメリットと、それがどのように課題解決に繋がるかを以下に示します。

1. データパイプラインの信頼性向上と運用効率化

  • 依存関係の明確化と実行制御
    • ref関数でSQLクエリ間の依存関係をコードで明示的に定義できるため、実行順序が保証される。
    • 失敗時は後続が実行されず、データの不整合やエラー連鎖を防ぐ。
  • データリネージ活用による迅速な問題解決
    • 依存関係に基づきデータリネージを自動生成・可視化することで、影響範囲の正確な把握や問題発生時の迅速な原因特定が可能になる。
    • タグ機能との組み合わせで、特定データセット群の影響範囲把握など、より高度な管理・分析もできる。
  • 効率的な再実行プロセス
    • ワークフロー失敗時、失敗した処理から、またはワークフロー全体を簡単に再実行できるため、リカバリ作業の時間と手間を大幅に削減し、迅速なデータ復旧を実現する。

2. 変更管理の容易化と再現性の向上

  • GitによるSQL定義のバージョン管理
    • SQL定義ファイル(.sqlxファイル等)をGitで管理することで、変更履歴が記録され、過去バージョンの参照や復元が容易になる。
    • 結果として、変更に伴うリスクを低減し、システムの安定性と再現性を高め、リカバリ工数の削減にも繋がる。

3. 運用負荷の軽減とコストメリット

  • フルマネージドサービス
    • Google Cloud のフルマネージドサービスであり、別途サーバーをメンテナンスする必要が無い。
  • 無料利用
    • Dataform 自体は無料で利用可能(※BigQueryの利用料は別途発生)。
  • デメリットへの対応(自動リトライ処理の不在)
    • 標準で自動リトライ機能がないため、Cloud Loggingでエラーを検知・通知し、手動で再実行する運用でカバー。
    • これは現状許容範囲内と判断し、今後の機能更新に期待。

今後の展望

Dataform を導入したため、いくつかの恩恵を受けることができました。
今後は、Dataformの機能を最大限に活用し、以下の取り組みを検討しています。

  • Assertion 等を使用したデータ品質テストの実装
  • 既存のテーブルやビューを Dataform に置き換え(影響の少ない箇所から適用予定)
  • Federated Query を併用した ETL ツールとしての代替
  • 自動リトライ処理の仕組みを検討・構築

おわりに

本記事では、私たちが抱えていた課題からELTツールの比較検討、そしてDataform導入に至った経緯をご紹介しました。

まだまだナレッジが溜まっていないため、次回以降の記事で工夫した点や、苦労した点などもご紹介できればと思います。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?