Cloud Service
BigQuery Data Transfer Service
SaaS や外部ストレージから BigQuery へのデータ取り込みを、コードを書かずスケジュール実行で自動化。定期ロードの運用負荷をなくすマネージド転送サービス。AWS では Glue や AppFlow に近い位置づけ。
- 1.外部データソースから BigQuery へのロードを、設定だけで定期実行できるマネージド転送サービス。
- 2.Google Ads や YouTube などの SaaS、Cloud Storage、Amazon S3、他の DWH からの転送に対応する。
- 3.取り込み(EL)を担う層であり、変換や分析は BigQuery 側で行う。AWS の Glue / AppFlow に近い。
解決する課題
- Google Ads や YouTube などの SaaS データを、定期的に BigQuery へ取り込む処理を自前のスクリプトで回している
- Cloud Storage や Amazon S3 にたまる ファイルを継続的にロードしたいが、cron とスクリプトの運用が煙雑
- 他のデータウェアハウスから BigQuery へ移行・複製したいが、転送パイプラインを一から作りたくない
- ロードジョブのスケジュール管理・失敗時の再実行・通知を、マネージドな仕組みに任せたい
主要概念と用語
- 転送構成 (Transfer Config): 「どのソースから・どの宛先データセットへ・どのスケジュールで」取り込むかを定義する設定単位。これを 1 つ作るとそれ以降は自動で動く
- データソース (Data Source): 転送元のコネクタ。Google Ads、Google アド マネージャー、YouTube、Cloud Storage、Amazon S3、Teradata、Amazon Redshift などが用意されている
- 宛先データセット (Destination Dataset): 転送先となる BigQuery のデータセット。転送構成は宛先データセットと同一またはサポートされたリージョンに置く必要がある
- スケジュール (Schedule): 転送を実行する間隔。日次・週次・時間単位などをカスタムで指定でき、手動の オンデマンド実行もできる
- 転送実行 (Transfer Run): 1 回分の転送ジョブ。実行ごとに成功・失敗のステータスとログが記録される
- バックフィル (Backfill): 過去日付分のデータをまとめて再取得する仕組み。設定変更後や欠損補填に使う
- ランタイムパラメータ: 宛先テーブル名などに
run_dateのような日付プレースホルダを埋め込み、日付ごとに動的にロード先を切り替える機能
仕様・制限・クォータ
- BigQuery Data Transfer Service は取り込み(EL)に特化したマネージドサービス。変換ロジックを書く場所ではなく、変換は BigQuery 側のクエリや Dataform に委ねる
- 対応ソースは Google の SaaS 群(Google Ads、YouTube、アド マネージャー、Search Ads 360 など)、ファイル系(Cloud Storage、Amazon S3、Azure Blob Storage)、他 DWH(Teradata、Amazon Redshift)などに分かれる
- スケジュールは最短で時間単位程度から指定でき、SaaS ソースはデータの**更新頻度(リフレッシュ枠)**に依存する。具体的な最小間隔やリフレッシュ可能日数は変動するため公式ドキュメントで確認する
- 同時に走る転送数や 1 プロジェクトあたりの転送構成数などにクォータがあり、数値は変動する
- 宛先は BigQuery のみ。BigQuery の外へ書き出す用途には使わない
内部の仕組み
BigQuery Data Transfer Service は、利用者が作成した転送構成をスケジューラが監視し、指定タイミングごとに転送実行を起動するマネージドなオーケストレーション層です。実行されると、各データソース用のコネクタが転送元 API やストレージからデータを取得し、BigQuery のロードジョブとして宛先データセットへ書き込みます。利用者はインフラを意識せず、設定だけで定期ロードが回る構造です。
SaaS ソースの場合、コネクタは対象サービスの API を呼び出して、レポートやログ相当のデータを所定のスキーマで取り込みます。ファイル系ソース(Cloud Storage、Amazon S3 など)の場合は、指定したパスパターンに一致するファイルを検出して BigQuery にロードします。Amazon S3 のようなクラウド外ソースでは、いったん Google 側に取り込んでから BigQuery へ書き込む流れになります。
各転送実行は独立して成功・失敗が判定され、失敗時は自動リトライや手動の再実行ができます。過去分をまとめて取り直したいときはバックフィルを指定し、日付範囲を遡って実行をスケジュールします。宛先テーブル名にランタイムパラメータを使えば、実行日付ごとに別テーブルへ振り分けることも可能です。
Data Transfer Service はあくまで「BigQuery にデータを入れる」EL の層です。クレンジングや結合などの変換は、取り込んだ後に BigQuery の SQL や Dataform で行うのが定石。役割を分けておくと、転送の失敗と変換の失敗を切り分けやすくなります。
設計パターン / ベストプラクティス
- SaaS のレポートデータ(Google Ads、YouTube など)を集約したいなら、自前 API 連携を作らず標準コネクタの転送構成で取り込む
- 取り込み(Data Transfer Service)と変換(BigQuery SQL / Dataform)を明確に分離し、生データを保持してから変換結果を別テーブルに作る
- 日次ファイルの取り込みではランタイムパラメータで日付別テーブル/パーティションに振り分け、再実行時の上書きやバックフィルを安全にする
- 失敗を見逃さないよう、**通知(メール / Pub/Sub)**を設定して下流の処理やアラートと連携する
- 大量ファイルの取り込みは、パスパターンとパーティション設計を整えてスキャン量と再処理コストを抑える
- 他 DWH からの移行は、初回のバックフィルで過去分を取り込み、以降は差分転送に切り替える
運用・監視
- 各転送実行の履歴とログで成功・失敗、処理日付、エラー内容を確認し、失敗した実行だけを再実行する
- 失敗や完了の通知をメールまたは Pub/Sub に送り、Cloud Functions などでハンドリングして自動復旧やアラートにつなげる
- ログは Cloud Logging に出力されるため、監査やアラートの基盤として利用できる
- 欠損やスキーマ変更が起きた日付は、バックフィルで範囲を指定して取り直す
- 転送が連鎖して下流のクエリやダッシュボードに影響する場合は、転送完了をトリガーに後続処理を起動する設計にする
コスト
BigQuery Data Transfer Service の料金はソースの種類によって考え方が分かれます。Google の SaaS コネクタ(Google Ads、YouTube など)には転送サービスとしての料金が設定される一方、Cloud Storage からのロードのように BigQuery 標準のロード機能を使うものは、転送自体には追加料金がかからず下流の BigQuery 側で課金される、という整理が基本です。
| コスト要素 | 発生する場所 | 抑え方 |
|---|---|---|
| SaaS コネクタの転送 | 転送サービスのソース別料金 | 不要な転送構成を削除し、転送頻度を要件に合わせる |
| 取り込んだデータの保持 | BigQuery のストレージ課金 | 保持期間を区切り、古いパーティションを失効させる |
| 取り込み後のクエリ | BigQuery のクエリ課金 | パーティション/クラスタで読み取り量を削減する |
| クラウド外からの転送 | 下り通信や連携先ストレージの料金 | 転送頻度と対象範囲を絞り、重複取得を避ける |
転送頻度を必要以上に上げると、SaaS コネクタの料金や下流のクエリ量が膨らみます。また宛先データセットのリージョンとソースの組み合わせによっては転送できない、または通信費が変わることがあるため、リージョン設計を最初に固めてください。
セキュリティ
- アクセス制御は IAM で行い、転送構成の作成・編集・実行・閲覧の権限を役割ごとに最小権限で分離する(AWS の IAM 相当)
- 転送はサービスアカウントまたは認可されたユーザーの権限で動く。宛先データセットへの書き込み権限を必要な範囲に限定する
- SaaS ソースへの接続は OAuth による認可が前提で、認可情報は転送構成に紐づけて管理する。認証情報を平文でコードに埋め込まない
- Amazon S3 など外部ソースのアクセスキーは安全に管理し、最小権限のキーを使う
- 宛先の BigQuery データは既定で暗号化され、要件に応じ CMEK(顧客管理鍵, Cloud KMS) を適用できる。データ流出対策として VPC Service Controls を併用する
本番の宛先データセットへの書き込み権限を広く配り、誰でも転送構成を作れる状態にするのは NG。誤った構成が本番テーブルを上書きしたり、想定外のソースから取り込んだりする恐れがあります。転送構成の作成と実行の権限を分離し、宛先データセットを限定してください。
関連サービス・比較
取り込みの選択肢として、汎用的なデータ統合パイプラインを組む Dataflow と比較すると役割の違いが明確になります。Data Transfer Service は定型ソースからの定期ロードに特化し、Dataflow はコードで自由に処理を書くストリーミング/バッチ基盤です。
| 観点 | Data Transfer Service | Dataflow |
|---|---|---|
| 主な役割 | 定型ソースから BigQuery への定期ロード | 汎用のストリーミング/バッチ処理 |
| 記述方法 | コードレスの転送構成(設定のみ) | Apache Beam でコードを書く |
| 変換 | 基本は行わない(EL) | 任意の変換を自由に実装できる |
| 対応ソース | SaaS / ストレージ / 他 DWH の標準コネクタ | コネクタを実装すれば何でも |
| 宛先 | BigQuery のみ | BigQuery 以外にも多数 |
| 向く場面 | 定期的な取り込みを設定だけで回したい | 複雑な変換やリアルタイム処理が必要 |
SaaS や定型ソースの定期取り込みなら Data Transfer Service、コードで自由に処理を書くなら Dataflow、取り込み後の SQL 変換管理なら Dataform、というのが基本の軸です。取り込みは Data Transfer、変換は Dataform、と分担させると運用が整理されます。
ハンズオン / CLI例
# 1) BigQuery Data Transfer API を有効化
gcloud services enable bigquerydatatransfer.googleapis.com
# 2) 宛先データセットを用意(未作成の場合)
bq --location=asia-northeast1 mk --dataset my_project:ingest_dataset
# 3) Cloud Storage からの転送構成を作成(日次スケジュール)
# --params にソース固有の設定(バケットパスや形式)を JSON で渡す
bq mk --transfer_config \
--project_id=my_project \
--data_source=google_cloud_storage \
--target_dataset=ingest_dataset \
--display_name="gcs-daily-load" \
--schedule="every 24 hours" \
--params='{"data_path_template":"gs://my-bucket/data/*.csv","destination_table_name_template":"events","file_format":"CSV"}'
# 4) 既存の転送構成を一覧表示して確認
bq ls --transfer_config --transfer_location=asia-northeast1
Google Cloud Service
BigQuery Data Transfer Serviceを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
分析
比較で見る軸
クラウド: Google Cloud / カテゴリ: 分析 / 難易度: basic
導入後に効く点
Google Ads や YouTube などの SaaS、Cloud Storage、Amazon S3、他の DWH からの転送に対応する。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Google Cloud
- カテゴリ
- 分析
- 難易度
- basic
- 関連資格
- —
- 設計柱
- operational / cost
判断チェックリスト
- 自社の用途が「分析 / operational」に近いか確認する。
- 強みである「外部データソースから BigQuery へのロードを、設定だけで定期実行できるマネージド転送サービス。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。