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 へデータを転送できます。
当記事では、このイベントドリブン転送の概要から、実際のコンソール画面を用いた具体的な設定手順、そして動作確認までをステップバイステップで解説します。
- 参考 : BigQuery Data Transfer Service とは
- 参考 : イベント ドリブン転送
ユースケース
イベントドリブン転送は、データが発生してから分析に利用できるまでのリードタイムを短縮したい場合に特に有効です。具体的なユースケースとしては、以下のようなシナリオが挙げられます。
ユースケース | 概要 |
---|---|
アプリケーションログの分析 | Web サーバーなどから出力されるログファイルを Cloud Storage に集約し、障害検知や利用状況の分析のために BigQuery へ取り込む。 |
外部システムとのデータ連携 | パートナー企業や SaaS からファイル形式で提供される販売データや顧客データを、Cloud Storage に配置されたタイミングで速やかに取り込む。 |
アーキテクチャ
イベントドリブン転送は、Cloud Storage、Pub/Sub、そして BigQuery Data Transfer Service の3つのサービスを連携させて実現します。
全体の処理の流れは以下の通りです。
- ユーザーまたはアプリケーションが、監視対象の Cloud Storage バケットにファイルをアップロードします。
- ファイルの作成イベントを検知した Cloud Storage は、あらかじめ設定された Pub/Sub トピックに通知メッセージを送信します。
- BigQuery Data Transfer Service は、その Pub/Sub トピックを購読 (Subscribe) しており、メッセージを受け取ります。
- メッセージをトリガーとして、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 とサービスを検索に pubsub.googleapis.com
を入力し、検索します。

検索結果が複数表示されるため、以下を選択します。
pubsub.googleapis.com の場合

bigquery.googleapis.com の場合

bigquerydatatransfer.googleapis.com の場合

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

サービスアカウントの作成とロールを付与
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
、ロケーション タイプに Region
と asia-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 サブスクリプションから [サブスクリプションの作成] を選択します。

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

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

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

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

動作確認
全ての設定が完了したので、実際にファイルをアップロードして、データが自動的に 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 バケットにアップロードします。

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


福井 達也(記事一覧)
カスタマーサクセス課 エンジニア
2024年2月 G-gen JOIN
元はアプリケーションエンジニア(インフラはAWS)として、PM/PL・上流工程を担当。G-genのGoogle Cloudへの熱量、Google Cloudの魅力を味わいながら日々精進