· 10分で読める

Google広告のデータをBigQueryに自動転送する|Data Transfer Serviceの設定ガイド

目次閉じる開く

Data Transfer Serviceとは

BigQuery Data Transfer Service(DTS)は、Google広告などのデータをBigQueryへ定期転送するGoogle公式のマネージドサービスです。一度設定すれば、毎日自動でレポートデータがBigQueryに蓄積されます。スクリプト開発は不要で、Google広告用の転送自体は無料です。

Data Transfer Serviceによる自動転送の全体像Google広告アカウント / MCCDTS24時間ごとに自動実行直近7日を自動で取り直しBigQuery日付パーティションで蓄積設定は初回のみ。スクリプト開発なし・転送自体は無料

広告データ基盤を作るなら、最初に設定すべき連携です。Meta広告やYahoo!広告と違って実装が不要なため、BigQueryに慣れる入口としても適しています。基盤全体の設計はBigQueryで広告データを集約する方法で解説しています。

この記事では、コンソールでの設定手順、転送されるテーブルの読み解き方、バックフィルの仕様、運用してわかる注意点までを一気通貫で説明します。

前提条件を確認する

設定に入る前に、必要な環境と権限を確認します。

項目内容
Google Cloudプロジェクト請求先アカウントの紐付けまで済んでいること
BigQuery Data Transfer APIプロジェクトで有効化されていること
BigQuery側の権限roles/bigquery.admin(または転送作成の個別権限)
Google広告側の権限対象アカウント(またはMCC)への読み取り以上のアクセス
転送先データセット事前に作成しておく(例: google_ads

権限まわりの要点は2つです。BigQuery側は、転送設定を作るユーザーに bigquery.admin 相当のロールが必要です。Google広告側は、転送を認可するGoogleアカウントが対象のcustomer IDにアクセスできる必要があります。広告運用者と基盤管理者が別の場合は、両方の権限を持つアカウントをどれにするか先に決めておくとスムーズです。

データセットの作成をコマンドで行いたい場合は、gcloud CLIの活用ガイドを参照してください。

設定手順

コンソールでの設定

Google Cloudコンソールでの設定は5分程度で完了します。

  1. BigQueryの画面左メニューから「データ転送」を開き、「転送を作成」を選択する
  2. ソースの種類で「Google Ads」を選択する
  3. 転送構成名(例: google_ads_daily)と転送先データセットを指定する
  4. customer IDを入力する(ハイフンなしの10桁)
  5. P-MAXを配信している場合は「Include PMax Campaign Tables」のチェックボックスをオンにする
  6. スケジュールを確認して保存し、Googleアカウントで認可する

customer IDにはMCC(マネージャーアカウント)のIDも指定できます。MCCを指定すると、配下にリンクされた全アカウントのデータが1つの転送でまとめて取り込まれます。公式ドキュメント上の上限は1つのマネージャーアカウントにつき8,000 customer IDです。代理店やインハウスで複数アカウントを扱う場合は、MCC単位での設定が管理しやすくおすすめです。

スケジュールは既定で24時間ごとに1回実行されます。実行時刻は作成時刻をもとに決まり、これより高い頻度にはできません。日次バッチとして扱う前提で設計してください。

bqコマンドでの設定

同じ設定はbqコマンドでも作成できます。構成をコードで管理したい場合はこちらが便利です。

bq mk --transfer_config \
  --target_dataset=google_ads \
  --display_name="google_ads_daily" \
  --data_source=google_ads \
  --params='{"customer_id":"1234567890"}'

作成後の転送一覧や実行履歴の確認もbqコマンドで完結します。詳しくはgcloud CLIで広告データ基盤を管理するの転送管理セクションをご覧ください。

転送されるテーブルを読み解く

初回転送が完了すると、データセットに多数のテーブルとビューが作られます。最初は数に圧倒されますが、構造の原則を押さえれば迷いません。

テーブルとビューの2層構造

実体は p_ads_ プレフィックスのパーティション化されたテーブルに保存され、その上に ads_ プレフィックスのビューが作られます。普段のクエリはビューに対して書けば十分です。テーブル名の末尾には customer ID が付きます。

よく使うビュー内容
ads_Campaign_{customer_id}キャンペーンの属性(名前・ステータスなど)
ads_CampaignBasicStats_{customer_id}キャンペーン単位の実績(費用・表示・クリック)
ads_CampaignConversionStats_{customer_id}キャンペーン単位のコンバージョン
ads_AdGroupBasicStats_{customer_id}広告グループ単位の実績
ads_Ad_{customer_id} / ads_AdBasicStats_{customer_id}広告の属性と実績

読み解きの最重要ポイントは、属性系(Campaign など)と実績系(BasicStats / ConversionStats)が分かれていることです。費用とCVを並べるには、属性・実績・CVの3種類をJOINする形になります。

日付フィルタと費用の単位

日付の絞り込みには _DATA_DATE 列を使います。パーティション列として機能するため、期間を絞ればスキャン量と費用を抑えられます。もう1つの必須知識が費用の単位です。費用フィールド(metrics_cost_micros)はmicros単位のため、円に直すには1,000,000で割ります。

SELECT
  _DATA_DATE AS date,
  campaign_id,
  SUM(metrics_cost_micros) / 1000000 AS cost,
  SUM(metrics_impressions) AS impressions,
  SUM(metrics_clicks) AS clicks
FROM `your-project.google_ads.ads_CampaignBasicStats_1234567890`
WHERE _DATA_DATE BETWEEN "2026-07-01" AND "2026-07-23"
GROUP BY date, campaign_id
ORDER BY date

この2点(_DATA_DATE とmicros)を知らないまま集計すると、管理画面と桁違いの数値が出て混乱します。導入時に必ず数日分を管理画面と突き合わせて、集計の正しさを確認してください。SQLの書き方全般はBigQueryのSQL実践ガイドで扱っています。

バックフィルと更新の仕様

直近7日は自動で取り直される

DTSには「refresh window(更新ウィンドウ)」という仕組みがあり、毎日の転送時に直近の日付をさかのぼって取り直します。既定は7日間で、最大30日間まで設定できます。

refresh window: 転送のたびに直近7日を自動更新8日以上前: 転送済みデータを保持直近7日: 毎日自動で取り直しCVの計上遅れや媒体側の修正が自動で反映される自作スクリプトなら自分で実装する「洗い替え」をDTSは標準装備している

コンバージョンは計上が遅れて増えるため、この仕組みがないと直近の数値がすぐ古くなります。自作のAPI連携では自分で実装する「洗い替え」を、DTSは標準で備えていると理解してください。長いアトリビューション期間のCVを扱う場合は、ウィンドウを7日より延ばすことも検討します。

過去データのバックフィル

転送開始前の過去データは、バックフィル(過去分の転送実行)で取得します。転送設定の詳細画面から対象期間を指定して実行するだけです。数値のずれに気づいたときに、特定期間だけ取り直す用途でも使えます。

注意点として、Google広告側のデータ保持ポリシー変更により、37ヶ月より前のデータはバックフィルでも取得できなくなりました。過去データに価値がある場合は、消える前の取得をおすすめします。詳細はGoogle広告の37ヶ月データ制限で解説しています。

運用の注意点

実運用で気をつけるべきポイントを3つ挙げます。いずれも筆者が本番運用しているなかで実際に影響のあったものです。

注意点対応
転送完了前にレポートが走る日次レポートは転送実行時刻より後に設定する
P-MAXの実績が通常テーブルに揃わない「Include PMax Campaign Tables」をオンにし専用テーブルを確認
CVが実績系テーブルに見当たらないConversionStats 系のテーブルを参照する

1つ目は時刻の設計です。転送は毎日ほぼ決まった時刻に実行されるため、その完了前に日次レポートのクエリが走ると、前日分が欠けたレポートになります。筆者の環境では転送が朝に実行されるため、後続のレポート処理は1時間以上ずらして組んでいます。転送実行履歴で自分の環境の実行時刻を確認し、余裕を持たせてください。

2つ目はP-MAXです。P-MAXキャンペーンは通常のテーブル群に実績が揃わないケースが公式のissue trackerでも報告されています。設定時にP-MAX用テーブルのオプションを必ずオンにし、P-MAX分の実績は専用テーブル側で確認する運用にすると安全です。

3つ目はテーブルの選び間違いです。CampaignBasicStats には費用・表示・クリックはありますが、CVは CampaignConversionStats 側にあります。ビューを眺めただけでは気づきにくいため、最初にJOINまで含めた集計クエリをテンプレート化しておくと、以降の分析が安定します。

蓄積が始まったら、Looker Studioでのダッシュボード化AIエージェントとのMCP接続へ進むと、データの活用の幅が一気に広がります。

まとめ

Google広告のBigQuery自動転送について、設定から運用までを整理しました。

項目要点
費用転送は無料。BigQueryのストレージ・クエリ料金のみ
設定コンソールで5分。MCC指定で複数アカウント一括も可
スケジュール24時間ごとに1回。実行時刻を確認して後続処理を設計
テーブル属性系と実績系の2種類。CVはConversionStats系
単位費用はmicros。1,000,000で割る
更新直近7日は自動で取り直し。過去分はバックフィル

公式連携ならではの手軽さと安定性があり、広告データ基盤の最初の一歩として最適です。設定が済んだら、管理画面との数値突き合わせで集計クエリを確定させ、他媒体の取り込みへ進んでいきましょう。

関連記事

この記事をAIと深掘りする

要約・疑問の解消に。記事のタイトル・URL・参照元を入れた質問文が自動で入力されます。

| 共有 はてブ

SIGNALZ メルマガ

厳選した実践ナレッジを週1回お届けします。

SIGNALZ

SIGNALZ

運用型広告の実務経験をもとに、体系的なナレッジを発信しています。

SIGNALZの記事はAIを活用して作成し、10年以上の運用型広告の実務経験をもとに内容を確認・監修しています。制作方針の詳細はサイトについてをご覧ください。

この記事について感想やご質問を送れます

誤りの指摘、補足情報、ご質問など、お気軽にどうぞ。