將 Campaign Manager 資料載入 BigQuery
您可以使用 Campaign Manager 連接器的 BigQuery 資料移轉服務,將資料從 Campaign Manager 載入 BigQuery。透過 BigQuery 資料移轉服務,您可以安排週期性移轉工作,將 Campaign Manager 的最新資料新增至 BigQuery。
連接器總覽
Campaign Manager 連接器的 BigQuery 資料移轉服務支援下列資料移轉選項。
如要瞭解 Campaign Manager 報表如何轉換為 BigQuery 資料表和檢視表,請參閱「Campaign Manager 報表轉換」。
| 資料移轉選項 | 支援 |
|---|---|
| 受支援的報表 | Campaign Manager 連接器支援從下列報表移轉資料: |
| 重複頻率 | Campaign Manager 連接器支援每 8 小時移轉一次資料。 根據預設,Campaign Manager 資料移轉作業會排定在建立資料移轉作業時執行。 |
| 重新整理時間範圍 | Campaign Manager 連接器會在執行資料移轉時,擷取最多 2 天前的 Campaign Manager 資料。您無法設定這個連接器的重新整理時間範圍。
詳情請參閱「重新整理時間範圍」。 |
| 補充資料可用性 | 執行資料補充作業,擷取排定資料移轉作業以外的資料。只要在資料來源的資料保留政策允許範圍內,即可擷取資料。 如要瞭解 Display & Video 360 的資料保留政策,請參閱「資料刪除和保留控制項」。 |
從 Campaign Manager 移轉作業擷取資料
將資料從 Campaign Manager 移轉至 BigQuery 時,系統會將資料載入依日期分區的 BigQuery 資料表。資料載入的資料表分區會對應資料來源的日期。如果您在同一天安排多項移轉作業,BigQuery 資料移轉服務會以最新資料覆寫該日期的分區。在同一天進行多次移轉或執行補充作業,不會產生重複資料,其他日期的分區也不會受到影響。重新整理時間範圍
「更新回溯期」是指資料移轉作業發生時,資料移轉作業擷取資料的天數。舉例來說,如果重新整理時間範圍為三天,且每天進行移轉,BigQuery 資料移轉服務會從來源資料表擷取過去三天的所有資料。在本例中,每日移轉作業執行時,BigQuery 資料移轉服務會建立新的 BigQuery 目的地資料表分區,並複製當天的來源資料表資料,然後自動觸發補充執行作業,使用過去兩天的來源資料表資料更新 BigQuery 目的地資料表分區。自動觸發的回填執行作業會覆寫或增量更新 BigQuery 目的地資料表,具體取決於 BigQuery 資料移轉服務連接器是否支援增量更新。
首次執行資料移轉作業時,系統會擷取重新整理時間範圍內的所有可用來源資料。舉例來說,如果更新時間範圍為三天,且您首次執行資料移轉作業,BigQuery 資料移轉服務會擷取三天內的所有來源資料。
如要擷取重新整理時間範圍以外的資料 (例如歷來資料),或從任何移轉中斷或缺漏中復原資料,您可以啟動或排定補充執行作業。
事前準備
建立 Campaign Manager 資料移轉作業前,請先完成下列事項:
- 確認您已完成啟用 BigQuery 資料移轉服務的所有必要動作。
- 建立 BigQuery 資料集,用於儲存 Campaign Manager 資料。
確認貴機構有權存取 Campaign Manager 資料移轉 第 2 版 (Campaign Manager DTv2) 檔案。這些檔案會由 Campaign Manager 團隊傳送至 Cloud Storage bucket。如要存取 Campaign Manager DTv2 檔案,請根據您是否與 Campaign Manager 直接簽訂合約,採取相應的後續步驟。無論是哪一種情況,都可能需要支付額外費用。
- 如果您與 Campaign Manager 簽訂合約,請與 Campaign Manager 支援團隊聯絡,設定 Campaign Manager DTv2 檔案。
- 如果您未與 Campaign Manager 簽訂合約,您的代理商或 Campaign Manager 經銷商可能可以存取 Campaign Manager DTv2 檔案。請與您的代理商或經銷商聯絡,以便取得這些檔案的存取權。
完成這個步驟後,您會收到類似下方的 Cloud Storage bucket 名稱:
dcdt_-dcm_account123456如果您想要為 Pub/Sub 設定移轉作業執行通知,您必須擁有
pubsub.topics.setIamPolicy權限。詳情請參閱「BigQuery 資料移轉服務執行通知」。
所需權限
請確認您已授予下列權限。
必要的 BigQuery 角色
如要取得建立 BigQuery 資料移轉服務資料移轉作業所需的權限,請要求管理員授予您專案的 BigQuery 管理員 (roles/bigquery.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備建立 BigQuery 資料移轉服務資料移轉作業所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
您必須具備下列權限,才能建立 BigQuery 資料移轉服務資料移轉作業:
-
BigQuery 資料移轉服務權限:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
BigQuery 權限:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
詳情請參閱「授予 bigquery.admin 存取權」。
必要的 Campaign Manager 角色
授予 Cloud Storage 中 Campaign Manager DTv2 檔案的讀取權限。存取權是由提供 Cloud Storage bucket 的實體管理。
設定 Campaign Manager 轉移作業
如要設定 Campaign Manager 資料移轉作業,您必須具備:
Cloud Storage bucket:Campaign Manager DTv2 檔案的 Cloud Storage bucket URI,如「事前準備」一節所述。值區名稱應如下所示:
dcdt_-dcm_account123456Campaign Manager ID:您的 Campaign Manager Network、廣告客戶或 Floodlight ID。Network ID 在階層中是父項。
查看 Campaign Manager ID
如要擷取 Campaign Manager ID,您可以使用 Cloud Storage 控制台,檢查 Campaign Manager 資料移轉 Cloud Storage bucket 中的檔案。Campaign Manager ID 用於比對所提供 Cloud Storage bucket 中的檔案。ID 內嵌在檔案名稱中,而非 Cloud Storage bucket 名稱。
例如:
- 在名為
dcm_account123456_activity_*的檔案中,ID 為 123456。 - 在名為
dcm_floodlight7890_activity_*的檔案中,ID 為 7890。 - 在名為
dcm_advertiser567_activity_*的檔案中,ID 為 567。
尋找檔案名稱前置字串
在極少數的情況下,Cloud Storage bucket 中的檔案可能包含由 Google Marketing Platform 服務團隊為您設定的非標準自訂檔案名稱。
例如:
- 在名為
dcm_account123456custom_activity_*的檔案中,前置字串為 dcm_account123456custom,也就是_activity之前的所有內容。
如果您需要協助,請聯絡 Campaign Manager 支援小組。
建立 Campaign Manager 資料移轉作業
控制台
前往 Google Cloud 控制台的「Data transfers」(資料移轉) 頁面。
按一下「 建立移轉作業」。
在「Create Transfer」(建立轉移作業) 頁面:
在「Source type」(來源類型) 部分,「Source」(來源) 請選取「Campaign Manager」。
在「Transfer config name」(轉移設定名稱) 部分,「Display name」(顯示名稱) 請輸入資料移轉作業的名稱,例如
My Transfer。移轉作業名稱可以是任意值,日後需要修改移轉作業時能夠據此識別。
在「Schedule options」(排程選項) 區段中,針對「Schedule」(排程) 保留預設值 ([Start now] (立即開始)),或按一下 [Start at a set time] (於設定的時間開始)。
- 在「Repeats」(重複頻率) 選擇移轉作業的執行頻率。如果您不是選取「Daily」(每天),會需要進一步選擇細項。例如,您選了「Weekly」(每週),接著就要選取星期幾。
- 在「Start date and run time」(開始日期和執行時間),輸入開始資料移轉的日期和時間。如果選取「Start now」(立即開始),這個選項就會停用。
在「Destination settings」(目的地設定) 部分,「Destination dataset」(目的地資料集) 請選取您為了儲存資料而建立的資料集。
在「Data source details」(資料來源詳細資料) 區段:
- 在「Cloud Storage bucket」輸入或瀏覽用來儲存 Data Transfer 2.0 檔案的 Cloud Storage bucket 名稱。輸入 bucket 名稱時,請勿加入
gs://。 - 在「DoubleClick ID」輸入合適的 Campaign Manager ID。
- (選用步驟) 如果檔案內含類似這些範例的標準名稱,請將 「File name prefix」(檔案名稱前置字串) 欄位留空。如果 Cloud Storage bucket 中的檔案有自訂檔案名稱,請指定檔案名稱前置字串。
- 在「Cloud Storage bucket」輸入或瀏覽用來儲存 Data Transfer 2.0 檔案的 Cloud Storage bucket 名稱。輸入 bucket 名稱時,請勿加入
(選用) 在「Notification options」(通知選項) 區段中:
按一下 [儲存]。
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"}'。如果是 Campaign Manager,則必須提供bucket和network_id參數。bucket是包含 Campaign Manager DTv2 檔案的 Cloud Storage bucket。network_id是您的聯播網、Floodlight 或廣告主 ID。 - data_source 是資料來源,
dcm_dt(Campaign Manager)。
您還可以提供 --project_id 標記來指定特定專案。如果未指定 --project_id,系統會採用預設專案。
舉例來說,下列指令會使用 Campaign Manager ID 123456、Cloud Storage bucket dcdt_-dcm_account123456 和目標資料集 mydataset,建立名為 My Transfer 的 Campaign Manager 資料移轉作業。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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
排解 Campaign Manager 移轉作業設定問題
如果無法順利設定資料移轉作業,請參閱「排解移轉設定問題」一文中的「Campaign Manager 移轉問題」一節。
查詢資料
資料移轉至 BigQuery 時,系統會將資料寫入擷取時間分區資料表。詳情請參閱分區資料表簡介一文。
如果您直接查詢資料表,而非使用自動生成的檢視表,則必須在查詢中使用 _PARTITIONTIME 虛擬資料欄。詳情請參閱查詢分區資料表一文。
Campaign Manager 範例查詢
您可以使用下列 Campaign Manager 查詢範例來分析已移轉的資料。您也可以在數據分析等視覺化工具中使用查詢。這些查詢可協助您開始使用 BigQuery 查詢 Campaign Manager 資料。如果您對於這些報表的功能有其他問題,請洽詢您的 Campaign Manager 技術代表。
在下列各項查詢中,請將 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 替換為查詢範圍內所有相關 Campaign Manager 廣告活動的逗號分隔清單。
# 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 替換為查詢範圍內所有相關 Campaign Manager 廣告活動的逗號分隔清單。
# 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