キャンペーン マネージャーの転送

BigQuery Data Transfer Service for Campaign Manager を使用すると、キャンペーン マネージャーのレポートデータを繰り返し読み込むジョブを自動的にスケジュールし管理できます。

サポートされるレポート

キャンペーン マネージャー(旧 DoubleClick Campaign Manager)用の BigQuery Data Transfer Service は、現在、次のレポート オプションをサポートしています。

キャンペーン マネージャー レポートがどのように BigQuery のテーブルとビューに変換されるかについては、キャンペーン マネージャー レポートの変換をご覧ください。

レポート オプション サポート
サポート対象の API バージョン 2017 年 6 月 26 日
スケジュール

作成時間に基づいて、8 時間ごと。

設定不可

ウィンドウの更新

過去 2 日間

設定不可

最大バックフィル期間

過去 60 日間

キャンペーン マネージャーでは、データ転送ファイルが最大 60 日間保持されます。60 日を超えるファイルは削除されます。

始める前に

キャンペーン マネージャーの転送を作成する前に、以下を行います。

  • BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
  • 従来の BigQuery ウェブ UI を使用して転送を作成する場合は、権限ウィンドウが表示されるように、ブラウザで bigquery.cloud.google.com からのポップアップを許可します。BigQuery Data Transfer Service 権限で転送を管理できるようにする必要があります。
  • キャンペーン マネージャー データを保存する BigQuery データセットを作成します。
  • Campaign Manager Data Transfer v2(Campaign Manager DTv2)ファイルに組織がアクセスできることを確認します。これらのファイルは、キャンペーン マネージャー チームによって Cloud Storage バケットに配信されています。Campaign Manager DTv2 ファイルにアクセスするには、キャンペーン マネージャーと直接契約しているかどうかによって次のステップが異なります。どちらの場合も、追加料金が適用される場合があります。

    • キャンペーン マネージャーと契約している場合は、キャンペーン マネージャーのサポートに連絡して、Campaign Manager DTv2 ファイルを設定してください。
    • キャンペーン マネージャーと契約していない場合は、代理店またはキャンペーン マネージャーの販売パートナーが Campaign Manager DTv2 ファイルにアクセスできる可能性があります。これらのファイルへのアクセスについては、代理店または販売パートナーにお問い合わせください。

    この手順を完了すると、次のような Cloud Storage バケット名が届きます。

    dcdt_-dcm_account123456

  • Pub/Sub の転送実行通知を設定する場合は、pubsub.topics.setIamPolicy 権限が必要です。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。

必要な権限

  • BigQuery: 転送を作成するユーザーに、BigQuery で次の権限が付与されていることを確認します。

    • bigquery.transfers.update(転送を作成する権限)
    • bigquery.datasets.update(抽出先データセットに対する権限)

    bigquery.transfers.update 権限と bigquery.datasets.update 権限は、事前定義された IAM のロール bigquery.admin に含まれています。BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

  • キャンペーン マネージャー: Cloud Storage に保存されている Campaign Manager 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 です。

不明な点については、キャンペーン マネージャーのサポートにお問い合わせください。

キャンペーン マネージャーのデータ転送を作成する

コンソール

  1. Cloud Console の BigQuery ページに移動します。

    BigQuery ページに移動

  2. [転送] をクリックします。

  3. [転送を作成] をクリックします。

  4. [転送の作成] ページで、次の操作を行います。

    • [ソースタイプ] セクションの [ソース] で、[キャンペーン マネージャー] を選択します。

      転送のソース

    • [転送構成名] セクションの [表示名] に、転送名(例: My Transfer)を入力します。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。

      転送名

    • [スケジュール オプション] セクションで、[スケジュール] をデフォルト値([すぐに開始可能])のままにするか、[設定した時間に開始] をクリックします。

      • [繰り返しの頻度] で、転送を実行する頻度のオプションを選択します。

        • 毎日(デフォルト)
        • 毎週
        • 毎月
        • カスタム
        • オンデマンド

        [毎日] 以外のオプションを選択した場合は、追加のオプションが利用可能です。たとえば、[毎週] を選択した場合、曜日を選択するためのオプションが表示されます。

      • [開始日と実行時間] に、転送を開始する日付と時刻を入力します。[すぐに開始可能] を選択した場合、このオプションは無効になります。

        転送スケジュール

    • [転送先の設定] セクションの [宛先データセット] で、データを保存するために作成したデータセットを選択します。

      転送データセット

    • [データソースの詳細] セクションで、次の操作を行います。

      • [Cloud Storage バケット] に、Data Transfer V2.0 ファイルを保存する Cloud Storage バケットの名前を入力または参照します。バケット名を入力するときに、gs:// は含めないでください。
      • [DoubleClick ID] に、該当するキャンペーン マネージャー ID を入力します。
      • (省略可)このような例の標準名の場合、[File name prefix] フィールドは空のままにしておきます。Cloud Storage バケット内のファイルにこの例のような名前のファイルがある場合に限り、[File name prefix] に入力します。

        キャンペーン マネージャーのソースの詳細

    • (省略可)[通知オプション] セクションで、次の操作を行います。

      • 切り替えボタンをクリックしてメール通知を有効にします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
      • [Pub/Sub トピックを選択してください] で、トピック名を選択するか、[トピックを作成する] をクリックします。このオプションで、Pub/Sub の転送実行通知を構成します。
  5. [保存] をクリックします。

従来の UI

  1. BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [Transfers] をクリックします。

  3. [Add Transfer] をクリックします。

  4. [New Transfer] ページで次の操作を行います。

    • [Source] で、[Campaign Manager(formerly DCM)] を選択します。
    • [Display name] に転送名(例: My Transfer)を入力します。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
    • [宛先データセット] で、該当するデータセットを選択します。
    • [Cloud Storage Bucket] に、Data Transfer V2.0 ファイルを保存する Cloud Storage バケットの名前を入力します。バケット名を入力するときに、gs:// は含めないでください。
    • [DoubleClick ID] に、該当するキャンペーン マネージャー ID を入力します。
    • (省略可)このような例の標準名の場合、[File name prefix] フィールドは空のままにしておきます。Cloud Storage バケット内のファイルにこの例のような名前のファイルがある場合に限り、[File name prefix] に入力します。

      キャンペーンマネージャーの転送

    • (省略可)[Advanced] セクションを展開し、転送の実行通知を構成します。

      • [Pub/Sub topic] に、トピック名(例: projects/myproject/topics/mytopic)を入力します。
      • [Send email notifications] をオンにして、転送実行失敗のメール通知を許可します。
      • 転送を設定するときは [Disabled] をオンにしないでください。既存の転送を無効にするには、転送の操作をご覧ください。

        Pub/Sub トピック

  5. [追加] をクリックします。

  6. プロンプトが表示されたら、[Allow] をクリックして、キャンペーン マネージャーのレポートデータへのアクセス権限、および BigQuery でのデータの管理権限を BigQuery Data Transfer Service に付与します。権限ウィンドウが表示されるように、bigquery.cloud.google.com からのポップアップを許可します。

    転送の許可

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 は、Campaign Manager 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 リソースのインスタンスを指定します。

キャンペーン マネージャーの転送設定のトラブルシューティング

転送を設定する際に問題が発生した場合は、BigQuery Data Transfer Service 転送設定のトラブルシューティングにあるキャンペーン マネージャーの転送に関する問題をご覧ください。

データのクエリ

データが BigQuery に転送されると、取り込み時間パーティション分割テーブルにそのデータが書き込まれます。詳細については、パーティション分割テーブルの概要をご覧ください。

自動生成されたビューを使用せずに、テーブルでクエリを直接実行する場合は、そのクエリで _PARTITIONTIME 疑似列を使用する必要があります。詳細については、パーティション分割テーブルのクエリをご覧ください。

キャンペーン マネージャーのサンプルクエリ

次のキャンペーン マネージャー サンプルクエリを使用してすると、転送されたデータを分析できます。クエリは、Google データポータルなどの可視化ツールでも使用できます。これらのクエリは、BigQuery でキャンペーン マネージャー データのクエリを開始する場合に役立つように用意されています。これらのレポートでできることに関するその他の質問については、キャンペーン マネージャーの技術担当者にお問い合わせください。

次の各クエリで、dataset などの変数を実際の値に置き換えます。

最新のキャンペーン

以下のサンプルクエリは、最新のキャンペーンを取得します。

Console

SELECT
  Campaign,
  Campaign_ID
FROM
  `dataset.match_table_campaigns_campaign_manager_id`
WHERE
  _DATA_DATE = _LATEST_DATE

bq

bq query --use_legacy_sql=false \
'SELECT
   Campaign,
   Campaign_ID
 FROM
   `dataset.match_table_campaigns_campaign_manager_id`
 WHERE
   _DATA_DATE = _LATEST_DATE'

キャンペーンごとのインプレッション数と個別ユーザー数

以下のサンプルクエリは、過去 30 日間のキャンペーンごとのインプレッション数と個別ユーザーの数を分析します。

Console

# 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

bq

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)

bq query --use_legacy_sql=false \
'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'

キャンペーンと日付で並べ替えた最新のキャンペーン

以下のサンプルクエリは、過去 30 日のキャンペーンをキャンペーンと日付で並べ替え、最新のキャンペーンを分析します。

Console

# 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

bq

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
bq query --use_legacy_sql=false \
'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'

日付範囲内のキャンペーン別のインプレッション数と個別ユーザー数

次のサンプルクエリは、start_date から end_date までのキャンペーン別にインプレッション数と個別ユーザー数を分析します。

Console

# 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

bq

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
bq query --use_legacy_sql=false \
'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'

キャンペーンごとのインプレッション、クリック、アクティビティ、個別ユーザーの数

以下のサンプルクエリは、過去 30 日間のキャンペーンごとのインプレッション数、クリック数、アクティビティ、個別のユーザー数を分析します。このクエリでは、campaign_list などの変数を実際の値に置き換えます。たとえば、campaign_list は、クエリのスコープ内で関心のあるすべてのキャンペーン マネージャー キャンペーンが含まれるカンマ区切りのリストに置き換えます。

Console

# 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

bq

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
bq query --use_legacy_sql=false \
'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'

キャンペーン活動

以下のサンプルクエリは、過去 30 日間のキャンペーン活動を分析します。このクエリでは、campaign_list などの変数を実際の値に置き換えます。たとえば、campaign_list は、クエリのスコープ内で関心のあるすべてのキャンペーン マネージャー キャンペーンが含まれるカンマ区切りのリストに置き換えます。

Console

# 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

bq

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
bq query --use_legacy_sql=false \
'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'