Google アド マネージャーのデータを BigQuery に読み込む
Google アド マネージャーから BigQuery にデータを読み込むには、Google アド マネージャー用 BigQuery Data Transfer Service コネクタを使用します。BigQuery Data Transfer Service を使用すると、Google アド マネージャーの最新データを BigQuery に追加する定期的な転送ジョブをスケジュール設定できます。
コネクタの概要
Google アド マネージャー用 BigQuery Data Transfer Service コネクタは、データ転送で次のオプションをサポートしています。
データ転送オプション | サポート |
---|---|
サポートされるレポート | Google アド マネージャー コネクタは、次のレポートからのデータ転送をサポートしています。
Google アド マネージャー レポートがどのように BigQuery のテーブルとビューに変換されるかについては、Google アド マネージャー レポートの変換をご覧ください。 |
繰り返しの頻度 | Google アド マネージャー コネクタは、4 時間ごとのデータ転送をサポートしています。デフォルトでは、Google アド マネージャーのデータ転送は 8 時間ごとに繰り返されます。 データ転送を設定する際に、データ転送の時間を構成できます。 |
更新ウィンドウ | Google アド マネージャー コネクタは、データ転送の実行時に最大 2 日間の Google アド マネージャー データを取得します。このコネクタの更新期間は構成できません。 詳しくは、ウィンドウを更新するをご覧ください。 |
バックフィル データの可用性 | データ バックフィルを実行して、スケジュールされたデータ転送以外のデータを取得します。データソースのデータ保持ポリシーで許可されている限り、データを取得できます。 Google アド マネージャーのデータ保持ポリシーについては、Google アド マネージャーのデータ転送レポートをご覧ください。 |
Google アド マネージャーの転送からのデータの取り込み
Google アド マネージャーから BigQuery にデータを転送すると、データは日付でパーティション分割された BigQuery テーブルに読み込まれます。データが読み込まれるテーブル パーティションは、データソースの日付に対応します。同じ日付の複数の転送をスケジュールすると、BigQuery Data Transfer Service により、対象の日付のパーティションが最新のデータで上書きされます。同じ日に複数回の転送やバックフィルを実行しても、データは重複せず、他の日付のパーティションに対する影響はありません。更新ウィンドウ
更新ウィンドウとは、データ転送が行われたときにデータ転送でデータが取得される日数です。たとえば、更新ウィンドウが 3 日であり、毎日転送が行われる場合、BigQuery Data Transfer Service は過去 3 日間のソーステーブルからすべてのデータを取得します。この例では、毎日転送が発生すると、BigQuery Data Transfer Service は、当日のソーステーブルのデータのコピーを含む新しい BigQuery 宛先テーブル パーティションを作成し、バックフィル実行を自動的にトリガーして、過去 2 日間のソーステーブルのデータで BigQuery 宛先テーブル パーティションを更新します。自動トリガーされたバックフィル実行は、BigQuery Data Transfer Service コネクタで増分更新がサポートされているかどうかに応じて、BigQuery の宛先テーブルを上書きするか、増分更新します。
データ転送を初めて実行する際に、更新ウィンドウ内で利用可能なすべてのソースデータを取得します。たとえば、更新ウィンドウが 3 日で、データ転送を初めて実行する際は、BigQuery Data Transfer Service によって 3 日以内のすべてのソースデータが取得されます。
更新ウィンドウの期間外のデータ(過去のデータなど)を取得する場合や、転送の停止やギャップからデータを復元する場合は、バックフィル実行を開始またはスケジュールできます。
データ転送(DT)ファイルの更新
Google アド マネージャーのデータ転送(Google アド マネージャー DT)ファイルから作成されたテーブルは、増分更新できます。Google アド マネージャーは、Google アド マネージャー DT ファイルを Cloud Storage バケットに追加します。転送の実行では、BigQuery テーブルにすでに転送されているファイルを再読み込みするのではなく、Cloud Storage バケットから BigQuery テーブルに新しい Google アド マネージャー DT ファイルを増分読み込みします。
例: Google アド マネージャーは午前 1 時に file1
をバケットに追加し、午前 2 時に file2
を追加します。転送の実行は午前 3 時 30 分に開始され、file1
と file2
が BigQuery に読み込まれます。その後、Google アド マネージャーは、午前 5 時に file3
を追加し、午前 6 時に file4
を追加します。2 回目の転送の実行は午前 7 時 30 分に開始されます。4 つのファイルをすべて読み込んでテーブルを上書きするのではなく、file3
と file4
を BigQuery に追加します。
マッチテーブルの更新
マッチテーブルは、データ転送ファイル内に含まれる元の値の検索メカニズムを提供します。マッチテーブルの一覧については、Google アド マネージャー レポートの変換をご覧ください。マッチテーブルが異なれば、更新される取り込み方法も異なります。マッチテーブルとその取り込み方法を次の表に示します。
取り込み方法 | 説明 | マッチテーブル |
---|---|---|
増分アップデート | 増分更新は実行ごとに追加されます。たとえば、当日の最初の転送実行では、転送実行前に変更されたすべてのデータが読み込まれ、同じ日の 2 回目の転送実行では、前回の実行から現在の実行までの間に変更されたデータが読み込まれます。 | Company 、Order 、Placement 、LineItem 、AdUnit |
テーブル全体の更新 | テーブル全体の更新では、テーブル全体が 1 日に 1 回読み込まれます。たとえば、1 日の最初の転送実行では、テーブルで使用可能なすべてのデータが読み込まれます。同じ日に 2 回目の転送を実行すると、これらのテーブルの読み込みはスキップされます。 | AdCategory , AudienceSegmentCategory , BandwidthGroup , Browser , BrowserLanguage ,
DeviceCapability , DeviceCategory , DeviceManufacturer , GeoTarget , MobileCarrier ,
MobileDevice , MobileDeviceSubmodel , OperatingSystem , OperatingSystemVersion ,
ThirdPartyCompany , TimeZone , User , ProgrammaticBuyer
|
テーブル全体を上書きする | テーブル全体が転送の実行ごとに上書きされます。 | AudienceSegment |
始める前に
Google アド マネージャーのデータ転送を作成する前に、以下のことを行います。
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- Google アド マネージャー データを保存する BigQuery データセットを作成します。
-
Google アド マネージャーの Data Transfer(Google アド マネージャー DT)ファイルに組織がアクセスできることを確認します。これらのファイルは、Google アド マネージャー チームによって Cloud Storage バケットに配信されています。Google アド マネージャー DT ファイルにアクセスするには、アド マネージャー Data Transfer レポートを確認してください。Google アド マネージャー チームの追加料金が適用される場合があります。
この手順を完了すると、次のような Google Cloud Storage バケットを受け取ります。
gdfp-12345678
Google Cloud チームには、お客様に代わって Google アド マネージャー DT ファイルを生成する権限や、このようなファイルに対するアクセス権を付与したりする権限はありません。Google アド マネージャー DT ファイルへのアクセスについては、Google アド マネージャー サポートにお問い合わせください。
- Google アド マネージャー ネットワークへの API アクセスを有効化します。
- データ転送通知を設定する場合は、Pub/Sub の
pubsub.topics.setIamPolicy
権限が必要です。メール通知を設定するだけの場合、Pub/Sub の権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。
必要な権限
次の権限が付与されていることを確認します。
必要な BigQuery のロール
BigQuery Data Transfer Service データ転送の作成に必要な権限を取得するには、プロジェクトに対する BigQuery 管理者 (roles/bigquery.admin
)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、BigQuery Data Transfer Service のデータ転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
BigQuery Data Transfer Service データ転送を作成するには、次の権限が必要です。
-
BigQuery Data Transfer Service の権限:
-
bigquery.transfers.update
-
bigquery.transfers.get
-
-
BigQuery の権限:
-
bigquery.datasets.get
-
bigquery.datasets.getIamPolicy
-
bigquery.datasets.update
-
bigquery.datasets.setIamPolicy
-
bigquery.jobs.create
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
詳細については、bigquery.admin
へのアクセス権を付与するをご覧ください。
必要な Google アド マネージャーのロール
Cloud Storage に保存されている Google アド マネージャー DT ファイルに対する読み取りアクセス権を付与します。Google アド マネージャー DT ファイルの権限は Google アド マネージャー チームによって管理されます。また、Google アド マネージャー DT ファイルの他に、データ転送を作成するユーザーを Google アド マネージャー ネットワークに追加して、さまざまなマッチテーブルを作成するために必要なすべてのエンティティ(広告申込情報、注文、広告ユニットなど)への読み取りアクセス権を付与する必要があります。データ転送を認証したアド マネージャー ユーザーを、アド マネージャーのすべてのエンティティ チームに追加することで、この操作を行うことができます。
Google アド マネージャーの転送を設定する
Google アド マネージャーの BigQuery Data Transfer を設定するには、次が必要です。
Cloud Storage バケット: 始める前にで説明されている Google アド マネージャー DT ファイルの Cloud Storage バケット URI。バケット名は次のようになります。
gdfp-12345678
ネットワーク コード: ネットワークにログインすると、URL に Google アド マネージャーのネットワーク コードが表示されます。たとえば、URL
https://admanager.google.com/2032576#delivery
の場合は、2032576
がネットワーク コードです。詳細については、Google アド マネージャーのスタートガイドをご覧ください。
Google アド マネージャーの BigQuery Data Transfer Service データ転送を作成するには:
コンソール
Google Cloud コンソールの [データ転送] ページに移動します。
[転送を作成] をクリックします。
[転送の作成] ページで、次の操作を行います。
- [ソースタイプ] セクションの [ソース] で、[Google アド マネージャー(旧 DFP)] を選択します。
- [転送構成名] セクションの [表示名] に、データ転送の名前(例:
My Transfer
)を入力します。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
- [転送先の設定] セクションの [データセット] で、データを保存するために作成したデータセットを選択します。
- [データソースの詳細] セクションで、次の操作を行います。
- [Cloud Storage バケット] に、データ転送ファイルを格納する Cloud Storage バケットの名前を入力します。バケット名を入力するときに、
gs://
は含めないでください。 - [Network Code] に、ネットワーク コードを入力します。
- [Cloud Storage バケット] に、データ転送ファイルを格納する Cloud Storage バケットの名前を入力します。バケット名を入力するときに、
[サービス アカウント] メニューで、 Google Cloud プロジェクトに関連付けられているサービス アカウントからサービス アカウントを選択します。ユーザー認証情報を使用する代わりに、サービス アカウントと転送を関連付けることができます。データ転送でサービス アカウントを使用する方法の詳細については、サービス アカウントの使用をご覧ください。
フェデレーション ID でログインした場合、転送を作成するにはサービス アカウントが必要です。Google アカウントでログインした場合、転送用のサービス アカウントは省略可能です。サービス アカウントには必要な権限が付与されている必要があります。(省略可)[通知オプション] セクションで、次の操作を行います。
- 切り替えボタンをクリックしてメール通知を有効にします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
- 切り替えボタンをクリックして、Pub/Sub 実行の通知を有効にします。[Cloud Pub/Sub トピックを選択してください] で、トピック名を選択するか、[トピックを作成する] をクリックします。このオプションで、Pub/Sub の転送実行通知を構成します。
[保存] をクリックします。
bq
bq mk
コマンドを入力して、転送作成フラグ --transfer_config
を構成します。次のフラグも必要です。
--data_source
--target_dataset
--display_name
--params
オプションのフラグ:
--service_account_name
- ユーザー アカウントの代わりに、Google アド マネージャーの転送認証に使用するサービス アカウントを指定します。
bq mk --transfer_config \ --project_id=project_id \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source \ --service_account_name=service_account_name
ここで
- project_id は、プロジェクト ID です。
- dataset は、転送構成のターゲット データセットです。
- name は、データ転送構成の表示名です。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
- parameters には、作成される転送構成のパラメータを JSON 形式で指定します。例:
--params='{"param":"param_value"}'
。Google アド マネージャーでは、bucket
パラメータとnetwork_code
パラメータを指定する必要があります。bucket
: Google アド マネージャー DT ファイルを含む Cloud Storage バケット。network_code
: ネットワーク コードload_match_tables
: マッチテーブルを読み込むかどうか。デフォルトではTrue
に設定されています。
- data_source は、データソース
dfp_dt
(Google アド マネージャー)です。 - service_account_name は、データ転送の認証に使用されるサービス アカウント名です。サービス アカウントは、転送の作成に使用した
project_id
が所有している必要があります。また、必要な権限がすべて付与されている必要があります。
--project_id
フラグを指定して、特定のプロジェクトを指定することもできます。--project_id
を指定しない場合は、デフォルトのプロジェクトが使用されます。
たとえば、次のコマンドは、ネットワーク コード 12345678
、Cloud Storage バケット gdfp-12345678
、ターゲット データセット mydataset
を使用して、My Transfer
という名前で Google アド マネージャーのデータ転送を作成します。このデータ転送はデフォルトのプロジェクトで作成されます。
bq mk --transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"bucket": "gdfp-12345678","network_code": "12345678"}' \
--data_source=dfp_dt
コマンドを実行すると、次のようなメッセージが表示されます。
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
指示に従って、認証コードをコマンドラインに貼り付けます。
API
projects.locations.transferConfigs.create
メソッドを使用して、TransferConfig
リソースのインスタンスを指定します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Google アド マネージャーの転送設定のトラブルシューティング
データ転送の設定で問題が発生した場合は、転送構成のトラブルシューティングにある Google アド マネージャーの転送に関する問題をご覧ください。
データに対するクエリを実行する
データが BigQuery に転送されると、取り込み時間パーティション分割テーブルにそのデータが書き込まれます。詳細については、パーティション分割テーブルの概要をご覧ください。
自動生成されたビューを使用せずに、テーブルでクエリを直接実行する場合は、そのクエリで _PARTITIONTIME
疑似列を使用する必要があります。詳細については、パーティション分割テーブルのクエリをご覧ください。
サンプルクエリ
次の Google アド マネージャーのサンプルクエリを使用すると、転送されたデータを分析できます。このクエリは、Looker Studio などの可視化ツールでも使用できます。これらのクエリは、BigQuery で Google アド マネージャー データのクエリを開始する場合に役立つように用意されています。これらのレポートでできることに関するその他の質問については、Google アド マネージャーの技術担当者にお問い合わせください。
次の各クエリで、dataset などの変数は実際の値で置き換えてください。たとえば、network_code は Google アド マネージャーのネットワーク コードで置き換えます。
都市別のインプレッション数とユニーク ユーザー数
次の SQL サンプルクエリは、過去 30 日間のインプレッション数とユニーク ユーザー数を都市別に分析します。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT City, _DATA_DATE AS Date, count(*) AS imps, count(distinct UserId) AS uniq_users FROM `dataset.NetworkImpressions_network_code` WHERE _DATA_DATE BETWEEN start_date AND end_date GROUP BY City, Date
広告申込情報タイプ別のインプレッション数とユニーク ユーザー数
次の SQL サンプルクエリは、過去 30 日間のインプレッション数とユニーク ユーザー数を広告申込情報タイプ別に分析します。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT MT.LineItemType AS LineItemType, DT._DATA_DATE AS Date, count(*) AS imps, count(distinct UserId) AS uniq_users FROM `dataset.NetworkImpressions_network_code` AS DT LEFT JOIN `dataset.MatchTableLineItem_network_code` AS MT ON DT.LineItemId = MT.Id WHERE DT._DATA_DATE BETWEEN start_date AND end_date GROUP BY LineItemType, Date ORDER BY Date desc, imps desc
広告ユニット別のインプレッション数
次の SQL サンプルクエリは、過去 30 日間のインプレッション数を広告ユニット別に分析します。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT MT.AdUnitCode AS AdUnitCode, DT.DATA_DATE AS Date, count(*) AS imps FROM `dataset.NetworkImpressions_network_code` AS DT LEFT JOIN `dataset.MatchTableAdUnit_network_code` AS MT ON DT.AdUnitId = MT.Id WHERE DT._DATA_DATE BETWEEN start_date AND end_date GROUP BY AdUnitCode, Date ORDER BY Date desc, imps desc
広告申込情報別のインプレッション数
次の SQL サンプルクエリは、過去 30 日間のインプレッション数を広告申込情報別に分析します。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT MT.Name AS LineItemName, DT._DATA_DATE AS Date, count(*) AS imps FROM `dataset.NetworkImpressions_network_code` AS DT LEFT JOIN `dataset.MatchTableLineItem_network_code` AS MT ON DT.LineItemId = MT.Id WHERE DT._DATA_DATE BETWEEN start_date AND end_date GROUP BY LineItemName, Date ORDER BY Date desc, imps desc