BigQuery Data Transfer Serviceでイベントドリブンにデータを取り込む方法

記事タイトルとURLをコピーする

G-genの福井です。BigQuery Data Transfer Service のイベントドリブン機能の設定手順を紹介します。

イベントドリブン転送の概要

BigQuery Data Transfer Service とは

BigQuery Data Transfer Service は、Google Cloud 内外のデータソースから BigQuery へのデータロードを自動化する、フルマネージドなサービスです。これまでも、決まったスケジュールで定期的にデータ転送を実行する機能が提供されていました。

2025年6月、BigQuery Data Transfer Service で新しくイベントドリブン転送(Event-Driven Transfers)がサポートされたことで、Cloud Storage にファイルが配置されたことをトリガーに、 BigQuery へデータを転送できます。

当記事では、このイベントドリブン転送の概要から、実際のコンソール画面を用いた具体的な設定手順、そして動作確認までをステップバイステップで解説します。

ユースケース

イベントドリブン転送は、データが発生してから分析に利用できるまでのリードタイムを短縮したい場合に特に有効です。具体的なユースケースとしては、以下のようなシナリオが挙げられます。

ユースケース 概要
アプリケーションログの分析 Web サーバーなどから出力されるログファイルを Cloud Storage に集約し、障害検知や利用状況の分析のために BigQuery へ取り込む。
外部システムとのデータ連携 パートナー企業や SaaS からファイル形式で提供される販売データや顧客データを、Cloud Storage に配置されたタイミングで速やかに取り込む。

アーキテクチャ

イベントドリブン転送は、Cloud Storage、Pub/Sub、そして BigQuery Data Transfer Service の3つのサービスを連携させて実現します。

全体の処理の流れは以下の通りです。

  1. ユーザーまたはアプリケーションが、監視対象の Cloud Storage バケットにファイルをアップロードします。
  2. ファイルの作成イベントを検知した Cloud Storage は、あらかじめ設定された Pub/Sub トピックに通知メッセージを送信します。
  3. BigQuery Data Transfer Service は、その Pub/Sub トピックを購読 (Subscribe) しており、メッセージを受け取ります。
  4. メッセージをトリガーとして、Data Transfer Service の転送ジョブが実行され、指定されたファイルを BigQuery のテーブルにロードします。

制限事項

イベントドリブン転送を使用するには、いくつかの制限事項があります。

制限事項 詳細
同一サブスクリプションの再利用不可 同じ Pub/Sub サブスクリプションを、複数のイベントドリブン転送構成で再利用することはできません。
ランタイムパラメータの非対応 転送元となる Cloud Storage のURI(データパス)に、実行時の動的なパラメータを埋め込むことはサポートされていません。
参考: ランタイム パラメータ
イベントの待機時間 一度転送がトリガーされると、BigQuery Data Transfer Serviceは次のトリガーまで最大10分間待機することがあります。

料金

イベントドリブン転送の使用にあたり、BigQuery Data Transfer Service 自体には追加の料金はかかりません。ただし、連携する以下の各サービスにおいて、それぞれの利用量に応じた料金が発生します。

サービス 課金対象 備考
BigQuery Data Transfer Service - サービス自体の利用は無料です。
Cloud Storage ・ストレージ料金
・オペレーション料金
ファイルの保管と読み書きに対して発生します。
参考: Cloud Storage の料金
Pub/Sub ・メッセージング料金 Cloud Storageからの通知メッセージ量に応じて発生します。
毎月最初の10GBまでは無料枠が適用されます。
参考: Pub/Sub の料金
BigQuery ・ストレージ料金
・分析料金
ロードされたデータの保管と、そのデータに対するクエリ実行時に発生します。
参考: BigQuery の料金

事前準備

API の有効化

はじめに、以下の API を Google Cloud プロジェクトで有効化します。

サービス名 API 名
Pub/Sub pubsub.googleapis.com
BigQuery bigquery.googleapis.com
BigQuery Data Transfer Service bigquerydatatransfer.googleapis.com

 
Google Cloud コンソールの API とサービスの画面で、[+ API とサービスを有効にする] を選択します。

API とサービスを有効にするを選択

API とサービスを検索に pubsub.googleapis.com を入力し、検索します。

API 名で検索

検索結果が複数表示されるため、以下を選択します。

pubsub.googleapis.com の場合

pubsub.googleapis.com の選択

bigquery.googleapis.com の場合

bigquery.googleapis.com の選択

bigquerydatatransfer.googleapis.com の場合

bigquerydatatransfer.googleapis.com の選択

[有効にする] を選択します。

API を有効にするを選択

サービスアカウントの作成とロールを付与

BigQuery Data Transfer Service を実行するためのサービス アカウントを作成します。

Google Cloud コンソールの IAM と管理の画面で、[サービス アカウント] > [サービス アカウントを作成] を選択します。

サービス アカウントを作成を選択

サービス アカウント名に sv-event-driven-bq-data-transfer を入力し、[作成して続行] を選択します。 サービス アカウント名を入力すると、サービス アカウントIDは自動で設定されます。

サービス アカウントの作成

ロールに Storage オブジェクト閲覧者(roles/storage.objectViewer)を入力し、[続行] を選択します。

サービス アカウントに権限付与

[完了] を選択します。

サービス アカウントの設定完了

設定手順

データの格納先をCloud Storageに作成

Google Cloud コンソールの Cloud Storage 画面で、[バケット] > [作成] を選択します。

バケットを作成を選択

バケット名に g-gen-blog-event_driven_bq_data_transfer、ロケーション タイプに Regionasia-northeast1 (東京) を入力し、[作成] を選択します。
バケット名は、世界中で重複しない名前にする必要がありますので、ご自身の環境に合わせて適宜変更してください。

バケットの作成

データの転送先をBigQueryに作成

Cloud Storage から転送されたデータを格納するための、BigQuery のデータセットとテーブルを作成します。

今回は、以下のような簡単なスキーマを持つテーブルを例として作成します。

カラム名 データ型
name STRING
value INTEGER

 
データセットの作成

Google Cloud コンソールの BigQuery 画面で、[スタジオ] > [エクスプローラ] のプロジェクト ID 横の [⋮] > [データセットを作成] を選択します。

データセットを作成を選択

データセット ID に event_driven_bq_data_transfer、ロケーション タイプに リージョンasia-northeast1 (東京)を入力し、[データセットを作成] を選択します。

データセットを作成

テーブルの作成

作成したデータセットの横にある [⋮] から [テーブルを作成] を選択します。

テーブルを作成を選択

テーブルに from_gcs 、スキーマの [フィールドを追加] リンクを選択し、以下の項目を追加します。追加が完了した後に [テーブルを作成] を選択します。

フィールド名 種類
name STRING
value INTEGER

テーブルを作成

BigQuery Data Transfer Serviceで転送構成を作成

Google Cloud コンソールの BigQuery 画面で、[データ転送] > [転送を作成] を選択します。

転送を作成を選択

ソースに Google Cloud Storage、 表示名に event-driven-from-gcs、スケジュール オプションの繰り返しの頻度に イベント ドリブン、Pub/Sub サブスクリプションから [サブスクリプションの作成] を選択します。

転送の作成情報を入力(1/3)

サブスクリプションを作成画面の [作成] ボタンを選択します。

サブスクリプションを作成

データセットに event_driven_bq_data_transfer、Destination table に from_gcs、Cloud Storage URI の [バケットの選択] を選択します。

転送の作成情報を入力(2/3)

前の手順で作成したバケット g-gen-blog-event_driven_bq_data_transfer を選択し、ファイル名に sample-file-*.csv を入力し、[選択] を選択します。
ここで指定したファイル名に一致したファイルが、データ転送の対象となります。

Cloud Storage URI の選択

サービス アカウントに前の手順で作成したサービスアカウント sv-event-driven-bq-data-transf@⋯ を選択し、 [保存] を選択します。
取り込み対象ファイルのフォーマット(File format)やファイル内の区切り文字(Field delimiter)など、取り込み対象のデータ形式に合わせて設定値は適宜変更してください。

転送の作成情報を入力(3/3)

動作確認

全ての設定が完了したので、実際にファイルをアップロードして、データが自動的に BigQuery へ転送されることを確認します。

サンプルCSVファイルの作成

ローカルのPCに、sample-file-1.csv という名前で以下の内容のファイルを作成します。
BigQuery Data Transfer Service の転送作成時に、Header rows to skip の値を 0 に設定したため、ヘッダー行は設けません。

"name-1",1
"name-2",2
"name-3",3

CSVファイルを Cloud Storage へアップロード

作成した sample-file-1.csv を、Cloud Storage バケットにアップロードします。

CSV ファイルを Cloud Storage へアップロード

BigQueryでのデータ確認

ファイルがアップロードされると、イベントがトリガーされ、最大 10 分間待機した後に転送が実行されます。
今回の確認では、Cloud Storage にファイルが作成された時間(8:56:42)から転送が開始(9:01:44)されるまでに、約5分かかっています。

転送の実行履歴

BigQuery 内の登録データ

福井 達也(記事一覧)

カスタマーサクセス課 エンジニア
2024年2月 G-gen JOIN

元はアプリケーションエンジニア(インフラはAWS)として、PM/PL・上流工程を担当。G-genのGoogle Cloudへの熱量、Google Cloudの魅力を味わいながら日々精進