通过适用于 Google Ads(以前称为 Google AdWords)的 BigQuery Data Transfer Service,您可以自动安排和管理 Google Ads 报告数据的周期性加载作业。
支持的报告
目前,适用于 Google Ads 的 BigQuery Data Transfer Service 支持以下报告选项:
如需了解 Google Ads 报告如何转换为 BigQuery Data Transfer Service 表和视图,请参阅 Google Ads 报告转换。
如需将 Google Ads 报告映射到 Google Ads 界面中显示的内容,请参阅将报告映射到 Google Ads 界面。
报告选项 | 支持 |
---|---|
支持的 API 版本 |
如需了解 Google Ads API (AdWords API) 迁移,请参阅迁移指南 (v201809)。 |
时间安排 | 每天,自首次创建转移作业起(默认值) 您可以配置一天中的具体时间。 |
刷新时段 | 最近 7 天(默认值) 最多可配置 30 天 系统会每天获取一次匹配表的快照,并将其存储在与最近运行日期对应的分区中。系统不会针对刷新时段所加载的回填或天数更新匹配表快照。如需了解刷新时段不会更新哪些匹配表,请参阅设置回填。 |
回填时长上限 | 无限制 虽然 Google Ads 没有已知的数据保留限制,但 BigQuery Data Transfer Service 会限制一次回填中可以请求的天数。如需了解回填,请参阅设置回填。 |
每个经理帐号的客户 ID 数 | 2000 对于每个 Google Ads 经理帐号 (MCC),BigQuery Data Transfer Service 最多支持 2000 个客户 ID。 |
准备工作
在创建 Google Ads 传输之前,请先完成以下事项:
- 确认您已完成启用 BigQuery Data Transfer Service 所需的所有操作。
- 创建 BigQuery Data Transfer Service 数据集,以用于存储 Google Ads 数据。
- 如果您要设置 Pub/Sub 的转移作业运行通知,必须拥有
pubsub.topics.setIamPolicy
权限。如果您只想设置电子邮件通知,则无需 Pub/Sub 权限。如需了解详情,请参阅 BigQuery Data Transfer Service 运行通知。
所需权限
请确保创建转移作业的人员拥有以下必要权限:
BigQuery Data Transfer Service:
- 创建转移作业所需的
bigquery.transfers.update
权限 - 针对目标数据集的
bigquery.datasets.update
权限
预定义的 IAM 角色
bigquery.admin
包含bigquery.transfers.update
和bigquery.datasets.update
权限。如需详细了解 BigQuery Data Transfer Service 中的 IAM 角色,请参阅访问权限控制参考文档。- 创建转移作业所需的
Google Ads:对转移作业配置中使用的 Google Ads 客户 ID 或经理帐号 (MCC) 的读取权限。
设置 Google Ads 数据传输
为 Google Ads 报告设置数据转移需要以下信息:
- 客户 ID:由 Google Ads 发布的 Google Ads 客户 ID 或经理帐号 (MCC)。如需了解如何检索 Google Ads 客户 ID,请参阅查找客户 ID。
要为 Google Ads 报告创建数据转移作业,请执行以下操作:
控制台
转到 Cloud Console 中的 BigQuery 页面。
点击转移。
点击创建转移作业。
在创建转移作业页面上:
在来源类型部分的来源中,选择 Google Ads。
在转移配置名称部分的显示名中,输入转移作业的名称,例如
My Transfer
。转移作业名称可以是任何容易辨识的值,方便您以后在需要修改该作业时能轻松识别。在时间表选项部分的时间表中,保留默认值(立即开始)或点击在设置的时间开始。
在重复频率部分中,选择转移作业的运行频率选项。
- 每日一次(默认值)
- 每周一次
- 每月一次
- 自定义
- 按需
在开始日期和运行时间部分,输入开始转移作业的日期和时间。如果您选择的是立即开始,则此选项会处于停用状态。
在目标设置部分的目标数据集中,选择您创建的用来存储数据的数据集。
在数据源详细信息部分,执行以下操作:
- 在客户 ID 部分中,输入您的客户 ID 或经理帐号。
选中排除已移除/已停用的项 (Exclude removed/disabled Items),以阻止转移已移除或已停用的实体及指标。
(可选)在通知选项部分,执行以下操作:
点击保存。
bq
输入 bq mk
命令并提供转移作业创建标志 --transfer_config
。此外,还必须提供以下标志:
--data_source
--target_dataset
--display_name
--params
您还可以提供 --project_id
标志以指定具体项目。如果未指定 --project_id
,系统会使用默认项目。
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"}'
。对于 Google Ads,您必须提供customer_id
参数。您可以选择将exclude_removed_items
参数设置为true
,以防止转移已移除或已停用的实体及指标。 - data_source 是数据源,即
adwords
。
例如,以下命令使用客户 ID 123-123-1234
和目标数据集 mydataset
创建名为 My Transfer
的 Google Ads 转移作业。该转移作业将在默认项目中创建:
bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"customer_id":"123-123-1234","exclude_removed_items":"true"}' \
--data_source=adwords
首次运行此命令时,您会收到如下消息:
[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
对 Google Ads 经理帐号的支持
对于拥有多个特定于客户 ID 的 Google Ads 转移作业的现有客户,我们鼓励在经理帐号 (MCC) 级层设置一次 Google Ads 转移作业,安排数据回填,并停用各特定于客户 ID 的 Google Ads 转移作业。
与使用各个客户 ID 相比,使用 Google Ads 经理帐号具有多项优势:
- 针对多个客户 ID 生成报告时,您不再需要管理多个转移作业。
- 跨客户查询的编写方式简单得多,因为所有客户 ID 都存储在同一个表中。
- 使用 MCC 可以缓解 BigQuery Data Transfer Service 加载配额问题,因为多个客户 ID 将加载到同一作业中。
如需详细了解 Google Ads 经理帐号 (MCC),请参阅使用客户帐号和关于将帐号关联到经理帐号。
示例
以下列表显示了与特定 Google Ads 经理帐号相关联的客户 ID:
- 1234567890 - root 经理帐号
- 1234 - 子级经理帐号
- 1111 - 客户 ID
- 2222 - 客户 ID
- 3333 - 客户 ID
- 4444 - 客户 ID
- 567 - 子级经理帐号
- 5555 - 客户 ID
- 6666 - 客户 ID
- 7777 - 客户 ID
- 89 - 子级经理帐号
- 8888 - 客户 ID
- 9999 - 客户 ID
- 0000 - 客户 ID
- 1234 - 子级经理帐号
每份报告都会显示与某一经理帐号关联的各客户 ID。如需详细了解 BigQuery Data Transfer Service 中的 Google Ads 报告结构,请参阅 Google Ads 报告转换。
客户 ID 1234567890 对应的转移作业配置
root 经理帐号(客户 ID 1234567890)对应的传输配置将生成包含以下客户 ID 的传输运行:
- 1111(通过子经理帐号 1234)
- 2222(通过子经理帐号 1234)
- 3333(通过子经理帐号 1234)
- 4444(通过子级经理帐号 1234)
- 5555(通过子经理帐号 567 和子经理帐号 1234)
- 6666(通过子经理帐号 567 和子经理帐号 1234)
- 7777(通过子经理帐号 567 和子经理帐号 1234)
- 8888(通过子级经理帐号 89)
- 9999(通过子级经理帐号 89)
- 0000(个别客户 ID)
客户 ID 1234 对应的转移作业配置
子经理帐号 123(客户 ID 1234)对应的传输配置将生成包含以下客户 ID 的传输运行:
- 1111
- 2222
- 3333
- 4444
- 5555(通过子经理帐号 567)
- 6666(通过子经理帐号 567)
- 7777(通过子经理帐号 567)
客户 ID 567 对应的传输配置
子经理帐号 567(客户 ID 567)对应的传输配置将生成包含以下客户 ID 的传输运行:
- 5555
- 6666
- 7777
客户 ID 89 对应的传输配置
子经理帐号 89(客户 ID 89)对应的传输配置将生成包含以下客户 ID 的传输运行:
- 8888
- 9999
客户 ID 0000 对应的传输配置
客户 ID 0000 对应的传输配置将生成仅包含个别客户 ID 的传输运行:
- 0000
将 Google Ads 数据迁移到 MCC
要将 BigQuery Data Transfer Service 中的现有 Google Ads 数据迁移到 MCC 结构,您可以设置回填,将现有数据添加到由与经理帐号关联的转移作业配置创建的表。请注意,如果您安排了回填,系统不会更新匹配表。
排查 Google Ads 转移作业设置问题
如果您在设置转移作业时遇到问题,请参阅排查 BigQuery Data Transfer Service 转移作业设置问题中的 Google Ads 转移作业问题。
查询数据
当数据转移到 BigQuery Data Transfer Service 时,系统会将其写入提取时间分区表。如需了解详情,请参阅分区表简介。
如果您要直接查询表,而不是使用自动生成的视图,那么必须在查询中使用 _PARTITIONTIME
伪列。如需了解详情,请参阅查询分区表。
Google Ads 示例查询
您可以使用以下 Google Ads 示例查询来分析已转移的数据。您还可以在 Google Data Studio 等可视化工具中使用查询。 这些查询旨在帮助您开始使用 BigQuery Data Transfer Service 来查询 Google Ads 数据。如果您对这些报告的功能有其他问题,请联系您的 Google Ads 技术代表。
在以下每个查询中,将 dataset 替换为您的数据集名称。将 customer_id 替换为 Google Ads 客户 ID。
如果您要直接查询表,而不是使用自动生成的视图,那么必须在查询中使用 _PARTITIONTIME
伪列。如需了解详情,请参阅查询分区表。
广告系列效果
以下示例查询分析了最近 30 天内 Google Ads 广告系列的效果。
控制台
SELECT c.ExternalCustomerId, c.CampaignName, c.CampaignStatus, SUM(cs.Impressions) AS Impressions, SUM(cs.Interactions) AS Interactions, (SUM(cs.Cost) / 1000000) AS Cost FROM `dataset.Campaign_customer_id` c LEFT JOIN `dataset.CampaignBasicStats_customer_id` cs ON (c.CampaignId = cs.CampaignId AND cs._DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)) WHERE c._DATA_DATE = c._LATEST_DATE GROUP BY 1, 2, 3 ORDER BY Impressions DESC
bq
bq query --use_legacy_sql=false ' SELECT c.ExternalCustomerId, c.CampaignName, c.CampaignStatus, SUM(cs.Impressions) AS Impressions, SUM(cs.Interactions) AS Interactions, (SUM(cs.Cost) / 1000000) AS Cost FROM `dataset.Campaign_customer_id` c LEFT JOIN `dataset.CampaignBasicStats_customer_id` cs ON (c.CampaignId = cs.CampaignId AND cs._DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)) WHERE c._DATA_DATE = c._LATEST_DATE GROUP BY 1, 2, 3 ORDER BY Impressions DESC'
关键字计数
以下示例查询按广告系列、广告组和关键字状态分析关键字。此查询使用 KeywordMatchType
函数。关键字匹配类型有助于控制哪些搜索可以触发广告。如需详细了解关键字匹配选项,请参阅关于关键字匹配选项。
控制台
SELECT c.CampaignStatus AS CampaignStatus, a.AdGroupStatus AS AdGroupStatus, k.Status AS KeywordStatus, k.KeywordMatchType AS KeywordMatchType, COUNT(*) AS count FROM `dataset.Keyword_customer_id` k JOIN `dataset.Campaign_customer_id` c ON (k.CampaignId = c.CampaignId AND k._DATA_DATE = c._DATA_DATE) JOIN `dataset.AdGroup_customer_id` a ON (k.AdGroupId = a.AdGroupId AND k._DATA_DATE = a._DATA_DATE) WHERE k._DATA_DATE = k._LATEST_DATE GROUP BY 1, 2, 3, 4
bq
bq query --use_legacy_sql=false ' SELECT c.CampaignStatus AS CampaignStatus, a.AdGroupStatus AS AdGroupStatus, k.Status AS KeywordStatus, k.KeywordMatchType AS KeywordMatchType, COUNT(*) AS count FROM `dataset.Keyword_customer_id` k JOIN `dataset.Campaign_customer_id` c ON (k.CampaignId = c.CampaignId AND k._DATA_DATE = c._DATA_DATE) JOIN `dataset.AdGroup_customer_id` a ON (k.AdGroupId = a.AdGroupId AND k._DATA_DATE = a._DATA_DATE) WHERE k._DATA_DATE = k._LATEST_DATE GROUP BY 1, 2, 3, 4'