キャンペーン マネージャーのデータを BigQuery に読み込む
キャンペーン マネージャーから BigQuery にデータを読み込むには、キャンペーン マネージャー用 BigQuery Data Transfer Service コネクタを使用します。BigQuery Data Transfer Service を使用すると、キャンペーン マネージャーの最新データを BigQuery に追加する定期的な転送ジョブをスケジュール設定できます。
コネクタの概要
キャンペーン マネージャー用 BigQuery Data Transfer Service コネクタは、データ転送で次のオプションをサポートしています。
キャンペーン マネージャー レポートがどのように BigQuery のテーブルとビューに変換されるかについては、キャンペーン マネージャー レポートの変換をご覧ください。
データ転送オプション | サポート |
---|---|
サポートされるレポート | キャンペーン マネージャー コネクタは、次のレポートからのデータ転送をサポートしています。 |
繰り返しの頻度 | キャンペーン マネージャー コネクタは、8 時間ごとのデータ転送をサポートしています。 デフォルトでは、キャンペーン マネージャーのデータ転送は、データ転送が作成されたときにスケジュール設定されます。 |
更新ウィンドウ | キャンペーン マネージャー コネクタは、データ転送の実行時に最大 2 日間のキャンペーン マネージャーのデータを取得します。このコネクタの更新期間は構成できません。 詳しくは、ウィンドウを更新するをご覧ください。 |
バックフィル データの可用性 | データ バックフィルを実行して、スケジュールされたデータ転送以外のデータを取得します。データソースのデータ保持ポリシーで許可されている限り、データを取得できます。 ディスプレイ&ビデオ 360 のデータ保持ポリシーについては、データの削除と保持に関するコントロールをご覧ください。 |
キャンペーン マネージャーの転送からのデータの取り込み
キャンペーン マネージャーから 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 日以内のすべてのソースデータが取得されます。
更新ウィンドウの期間外のデータ(過去のデータなど)を取得する場合や、転送の停止やギャップからデータを復元する場合は、バックフィル実行を開始またはスケジュールできます。
始める前に
キャンペーン マネージャーのデータ転送を作成する前に、以下のことを行います。
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- キャンペーン マネージャー データを保存する BigQuery データセットを作成します。
キャンペーン マネージャー Data Transfer v2(キャンペーン マネージャー DTv2)ファイルに組織がアクセスできることを確認します。これらのファイルは、キャンペーン マネージャー チームによって Cloud Storage バケットに配信されています。キャンペーン マネージャー DTv2 ファイルにアクセスするには、キャンペーン マネージャーと直接契約しているかどうかによって次のステップが異なります。どちらの場合も、追加料金が適用される場合があります。
- キャンペーン マネージャーと契約している場合は、キャンペーン マネージャーのサポートに連絡して、キャンペーン マネージャー DTv2 ファイルを設定してください。
- キャンペーン マネージャーと契約していない場合は、代理店またはキャンペーン マネージャーの販売パートナーがキャンペーン マネージャー DTv2 ファイルにアクセスできる可能性があります。これらのファイルへのアクセスについては、代理店または販売パートナーにお問い合わせください。
この手順を完了すると、次のような Cloud Storage バケット名が届きます。
dcdt_-dcm_account123456
Pub/Sub の転送実行通知を設定する場合は、
pubsub.topics.setIamPolicy
権限が必要です。詳細については、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
へのアクセス権を付与するをご覧ください。
キャンペーン マネージャーの必要なロール
Cloud Storage に保存されているキャンペーン マネージャー DTv2 ファイルへの読み取りアクセス権を付与します。アクセスは Cloud Storage バケットを受け取ったエンティティにより管理されます。
キャンペーン マネージャーの転送を設定する
キャンペーン マネージャーのデータ転送を設定するには、以下が必要です。
Cloud Storage バケット: 始める前にで説明されている Campaign Manager DTv2 ファイルの Cloud Storage バケット URI。バケット名は次のようになります。
dcdt_-dcm_account123456
キャンペーン マネージャー ID: キャンペーン マネージャー ネットワーク、広告主、または Floodlight の ID。ネットワーク ID は、階層内で親になります。
キャンペーン マネージャー ID を確認する
キャンペーン マネージャー ID を取得するには、Cloud Storage コンソールを使用して、キャンペーン マネージャー Data Transfer Cloud Storage バケット内のファイルを確認します。キャンペーン マネージャー ID は、提供された Cloud Storage バケット内のファイルを照合するために使用されます。この ID はファイル名に埋め込まれ、Cloud Storage バケット名には埋め込まれません。
例:
dcm_account123456_activity_*
という名前付きファイルでは、ID は 123456 です。dcm_floodlight7890_activity_*
という名前付きファイルでは、ID は 7890 です。dcm_advertiser567_activity_*
という名前付きファイルでは、ID は 567 です。
ファイル名の接頭辞の検索
ごくまれに、Cloud Storage バケット内のファイルに、Google マーケティング プラットフォームのサービスチームによって設定された非標準のカスタムファイル名が含まれていることがあります。
例:
dcm_account123456custom_activity_*
という名前付きファイルでは、接頭辞は_activity
より前の部分のすべてである dcm_account123456custom です。
不明な点については、キャンペーン マネージャーのサポートにお問い合わせください。
キャンペーン マネージャーのデータ転送を作成する
コンソール
Google Cloud コンソールの [データ転送] ページに移動します。
[
転送を作成] をクリックします。[転送の作成] ページで、次の操作を行います。
[ソースタイプ] セクションの [ソース] で、[キャンペーン マネージャー] を選択します。
[転送構成名] セクションの [表示名] に、データ転送の名前(例:
My Transfer
)を入力します。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。[スケジュール オプション] セクションで、[スケジュール] をデフォルト値([すぐに開始可能])のままにするか、[設定した時間に開始] をクリックします。
- [繰り返しの頻度] で、転送を実行する頻度のオプションを選択します。[毎日] 以外のオプションを選択した場合は、追加のオプションが利用可能です。たとえば、[毎週] を選択した場合、曜日を選択するためのオプションが表示されます。
- [開始日と実行時間] に、データ転送を開始する日付と時刻を入力します。[すぐに開始可能] を選択した場合、このオプションは無効になります。
[転送先の設定] セクションの [転送先データセット] で、データを保存するために作成したデータセットを選択します。
[データソースの詳細] セクションで、次の操作を行います。
- [Cloud Storage バケット] に、Data Transfer V2.0 ファイルを保存する Cloud Storage バケットの名前を入力または参照します。バケット名を入力するときに、
gs://
は含めないでください。 - [DoubleClick ID] に、該当するキャンペーン マネージャー ID を入力します。
- (省略可)このような例の標準名の場合、[File name prefix] フィールドは空のままにしておきます。Cloud Storage バケット内のファイルにカスタム ファイル名がある場合は、ファイル名の接頭辞を指定します。
- [Cloud Storage バケット] に、Data Transfer V2.0 ファイルを保存する Cloud Storage バケットの名前を入力または参照します。バケット名を入力するときに、
(省略可)[通知オプション] セクションで、次の操作を行います。
[保存] をクリックします。
bq
bq mk
コマンドを入力して、転送作成フラグ --transfer_config
を構成します。次のフラグも必要です。
--data_source
--target_dataset
--display_name
--params
bq mk --transfer_config \ --project_id=project_id \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source
ここで
- project_id はプロジェクト ID です。
- dataset は、データ転送構成のターゲット データセットです。
- name は、データ転送構成の表示名です。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
- parameters には、作成されるデータ転送構成のパラメータを JSON 形式で指定します。例:
--params='{"param":"param_value"}'
。キャンペーン マネージャーの場合は、bucket
パラメータとnetwork_id
パラメータを指定する必要があります。bucket
は、キャンペーン マネージャー DTv2 ファイルが含まれる Cloud Storage バケットです。network_id
は、ネットワーク、Floodlight、または広告主 ID です。 - data_source は、データソース
dcm_dt
(キャンペーン マネージャー)です。
--project_id
フラグを指定して、特定のプロジェクトを指定することもできます。--project_id
を指定しない場合は、デフォルトのプロジェクトが使用されます。
たとえば、次のコマンドは、キャンペーン マネージャー ID 123456
、Cloud Storage バケット dcdt_-dcm_account123456
、ターゲット データセット mydataset
を使用して、My Transfer
という名前でキャンペーン マネージャーのデータ転送を作成します。パラメータ file_name_prefix
はオプションで、まれにカスタム ファイル名にのみ使用されます。
このデータ転送はデフォルトのプロジェクトで作成されます。
bq mk --transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"bucket": "dcdt_-dcm_account123456","network_id": "123456","file_name_prefix":"YYY"}' \
--data_source=dcm_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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
キャンペーン マネージャーの転送設定をトラブルシューティングする
データ転送を設定する際に問題が発生した場合は、転送構成のトラブルシューティングにあるキャンペーン マネージャーの転送に関する問題をご覧ください。
データに対するクエリを実行する
データが BigQuery に転送されると、取り込み時間パーティション分割テーブルにそのデータが書き込まれます。詳細については、パーティション分割テーブルの概要をご覧ください。
自動生成されたビューを使用せずに、テーブルでクエリを直接実行する場合は、そのクエリで _PARTITIONTIME
疑似列を使用する必要があります。詳細については、パーティション分割テーブルのクエリをご覧ください。
キャンペーン マネージャーのサンプルクエリ
次のキャンペーン マネージャー サンプルクエリを使用してすると、転送されたデータを分析できます。このクエリは、Looker Studio などの可視化ツールでも使用できます。これらのクエリは、BigQuery でキャンペーン マネージャー データのクエリを開始する場合に役立つように用意されています。これらのレポートでできることに関するその他の質問については、キャンペーン マネージャーの技術担当者にお問い合わせください。
次の各クエリで、dataset などの変数は実際の値で置き換えてください。
最新のキャンペーン
以下の SQL サンプルクエリは、最新のキャンペーンを取得します。
SELECT Campaign, Campaign_ID FROM `dataset.match_table_campaigns_campaign_manager_id` WHERE _DATA_DATE = _LATEST_DATE
キャンペーンごとのインプレッション数と個別ユーザー数
以下の SQL サンプルクエリは、過去 30 日間のキャンペーンごとのインプレッション数と個別ユーザーの数を分析します。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT Campaign_ID, _DATA_DATE AS Date, COUNT(*) AS count, COUNT(DISTINCT User_ID) AS du FROM `dataset.impression_campaign_manager_id` WHERE _DATA_DATE BETWEEN start_date AND end_date GROUP BY Campaign_ID, Date
キャンペーンと日付で並べ替えた最新のキャンペーン
以下の SQL サンプルクエリは、過去 30 日のキャンペーンをキャンペーンと日付で並べ替え、最新のキャンペーンを分析します。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT Campaign, Campaign_ID, Date FROM ( SELECT Campaign, Campaign_ID FROM `dataset.match_table_campaigns_campaign_manager_id` WHERE _DATA_DATE = _LATEST_DATE ), ( SELECT date AS Date FROM `bigquery-public-data.utility_us.date_greg` WHERE Date BETWEEN start_date AND end_date ) ORDER BY Campaign_ID, Date
日付範囲内のキャンペーン別のインプレッション数と個別ユーザー数
次の SQL サンプルクエリは、start_date から end_date までのキャンペーン別にインプレッション数と個別ユーザー数を分析します。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT base.*, imp.count AS imp_count, imp.du AS imp_du FROM ( SELECT * FROM ( SELECT Campaign, Campaign_ID FROM `dataset.match_table_campaigns_campaign_manager_id` WHERE _DATA_DATE = _LATEST_DATE ), ( SELECT date AS Date FROM `bigquery-public-data.utility_us.date_greg` WHERE Date BETWEEN start_date AND end_date ) ) AS base LEFT JOIN ( SELECT Campaign_ID, _DATA_DATE AS Date, COUNT(*) AS count, COUNT(DISTINCT User_ID) AS du FROM `dataset.impression_campaign_manager_id` WHERE _DATA_DATE BETWEEN start_date AND end_date GROUP BY Campaign_ID, Date ) AS imp ON base.Campaign_ID = imp.Campaign_ID AND base.Date = imp.Date WHERE base.Campaign_ID = imp.Campaign_ID AND base.Date = imp.Date ORDER BY base.Campaign_ID, base.Date
キャンペーンごとのインプレッション、クリック、アクティビティ、個別ユーザーの数
以下の SQL サンプルクエリは、過去 30 日間のキャンペーンごとのインプレッション数、クリック数、アクティビティ、個別のユーザー数を分析します。このクエリでは、campaign_list などの変数を実際の値に置き換えます。たとえば、campaign_list は、クエリのスコープ内で関心のあるすべてのキャンペーン マネージャー キャンペーンが含まれるカンマ区切りのリストに置き換えます。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT base.*, imp.count AS imp_count, imp.du AS imp_du, click.count AS click_count, click.du AS click_du, activity.count AS activity_count, activity.du AS activity_du FROM ( SELECT * FROM ( SELECT Campaign, Campaign_ID FROM `dataset.match_table_campaigns_campaign_manager_id` WHERE _DATA_DATE = _LATEST_DATE ), ( SELECT date AS Date FROM `bigquery-public-data.utility_us.date_greg` WHERE Date BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) ) ) AS base LEFT JOIN ( SELECT Campaign_ID, _DATA_DATE AS Date, COUNT(*) AS count, COUNT(DISTINCT User_ID) AS du FROM `dataset.impression_campaign_manager_id` WHERE _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) GROUP BY Campaign_ID, Date ) AS imp ON base.Campaign_ID = imp.Campaign_ID AND base.Date = imp.Date LEFT JOIN ( SELECT Campaign_ID, _DATA_DATE AS Date, COUNT(*) AS count, COUNT(DISTINCT User_ID) AS du FROM `dataset.click_campaign_manager_id` WHERE _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) GROUP BY Campaign_ID, Date ) AS click ON base.Campaign_ID = click.Campaign_ID AND base.Date = click.Date LEFT JOIN ( SELECT Campaign_ID, _DATA_DATE AS Date, COUNT(*) AS count, COUNT(DISTINCT User_ID) AS du FROM `dataset.activity_campaign_manager_id` WHERE _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) GROUP BY Campaign_ID, Date ) AS activity ON base.Campaign_ID = activity.Campaign_ID AND base.Date = activity.Date WHERE base.Campaign_ID IN campaign_list AND (base.Date = imp.Date OR base.Date = click.Date OR base.Date = activity.Date) ORDER BY base.Campaign_ID, base.Date
キャンペーン活動
以下の SQL サンプルクエリは、過去 30 日間のキャンペーン活動を分析します。このクエリでは、campaign_list などの変数を実際の値に置き換えます。たとえば、campaign_list は、クエリのスコープ内で関心のあるすべてのキャンペーン マネージャー キャンペーンが含まれるカンマ区切りのリストに置き換えます。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT base.*, activity.count AS activity_count, activity.du AS activity_du FROM ( SELECT * FROM ( SELECT Campaign, Campaign_ID FROM `dataset.match_table_campaigns_campaign_manager_id` WHERE _DATA_DATE = _LATEST_DATE ), ( SELECT mt_at.Activity_Group, mt_ac.Activity, mt_ac.Activity_Type, mt_ac.Activity_Sub_Type, mt_ac.Activity_ID, mt_ac.Activity_Group_ID FROM `dataset.match_table_activity_cats_campaign_manager_id` AS mt_ac JOIN ( SELECT Activity_Group, Activity_Group_ID FROM `dataset.match_table_activity_types_campaign_manager_id` WHERE _DATA_DATE = _LATEST_DATE ) AS mt_at ON mt_at.Activity_Group_ID = mt_ac.Activity_Group_ID WHERE _DATA_DATE = _LATEST_DATE ), ( SELECT date AS Date FROM `bigquery-public-data.utility_us.date_greg` WHERE Date BETWEEN start_date AND end_date ) ) AS base LEFT JOIN ( SELECT Campaign_ID, Activity_ID, _DATA_DATE AS Date, COUNT(*) AS count, COUNT(DISTINCT User_ID) AS du FROM `dataset.activity_campaign_manager_id` WHERE _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) GROUP BY Campaign_ID, Activity_ID, Date ) AS activity ON base.Campaign_ID = activity.Campaign_ID AND base.Activity_ID = activity.Activity_ID AND base.Date = activity.Date WHERE base.Campaign_ID IN campaign_list AND base.Activity_ID = activity.Activity_ID ORDER BY base.Campaign_ID, base.Activity_Group_ID, base.Activity_ID, base.Date