Google Ads 转移作业
通过适用于 Google Ads(以前称为 Google AdWords)的 BigQuery Data Transfer Service,您可以自动安排和管理 Google Ads 报告数据的周期性加载作业。
支持的报告
适用于 Google Ads 的 BigQuery Data Transfer Service 支持 Google Ads API v14:
如需了解 Google Ads 报告如何转换为 BigQuery Data Transfer Service 表和视图,请参阅 Google Ads 报告转换。
如需将 Google Ads 报告映射到 Google Ads 界面中显示的内容,请参阅将报告映射到 Google Ads 界面。
报告选项 | 支持 |
---|---|
支持的 API 版本 | |
时间表 | 每天在首次创建传输之时(默认值) 您可以配置一天中的具体时间。 |
刷新时段 | 最近 7 天(默认值) 最多可配置 30 天 系统会每天截取一次匹配表的快照,并将其存储在最近运行日期对应的分区中。使用刷新窗口加载回填或天数时,匹配表快照不会更新。 |
回填时长上限 | 无限制 Google Ads 没有已知的数据保留限制(除了点击效果报告之外),但 BigQuery Data Transfer Service 会限制一次回填中可以请求的天数。如需了解回填,请参阅设置回填。 |
每个经理账号的客户 ID 数 | 8000 对于每个 Google Ads 经理账号 (MCC),BigQuery Data Transfer Service 最多支持 8,000 个客户 ID。 |
从 Google Ads 转移作业中提取数据
当您将数据从 Google Ads 转移到 BigQuery 时,系统会将数据加载到按日期分区的 BigQuery 表中。数据加载到的表分区对应于数据源中的日期。如果您在同一日期安排多次转移,BigQuery Data Transfer Service 会使用最新数据覆盖该特定日期的分区。同一天的多个转移作业或正在运行的回填不会导致重复数据,其他日期的分区不受影响。限制
- 您可以配置 Google Ads 转移作业的最大频率为每 24 小时一次。默认情况下,转移作业从创建转移作业时开始。但是,您可以在创建转移作业时配置转移作业开始时间。
- BigQuery Data Transfer Service 不支持在 Google Ads 转移期间执行增量转移。指定数据转移的日期时,系统会转移该日期的所有数据。
准备工作
在创建 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.get
和bigquery.datasets.update
权限
预定义的 IAM 角色
bigquery.admin
包含bigquery.transfers.update
、bigquery.datasets.update
和bigquery.datasets.get
权限。如需详细了解 BigQuery Data Transfer Service 中的 IAM 角色,请参阅访问权限控制参考文档。- 创建转移作业所需的
Google Ads:对转移作业配置中使用的 Google Ads 客户 ID 或经理账号 (MCC) 的读取权限。
创建 Google Ads 数据转移作业
要为 Google Ads 报告创建数据转移作业,您需要 Google Ads 客户 ID 或经理账号 (MCC)。如需了解如何检索 Google Ads 客户 ID,请参阅查找客户 ID。
如需为 Google Ads 报告创建数据转移作业,请选择以下选项之一:
控制台
转到 Google Cloud 控制台中的 BigQuery 页面。
点击
数据转移。点击
创建转移作业。在来源类型部分的来源中,选择 Google Ads。
在转移配置名称部分的显示名中,输入转移作业的名称,例如
My Transfer
。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。在时间表选项部分中,执行以下操作:
在重复频率部分,选择转移作业的运行频率选项。如果您选择天,请提供世界协调时间 (UTC) 的有效时间。
- 小时
- 星期几
- 点播课程
如果适用,请选择立即开始或在设置的时间开始,并提供开始日期和运行时间。
在目标设置部分的数据集中,选择您创建用来存储数据的数据集。
在数据源详细信息部分,执行以下操作:
在客户 ID中,输入您的 Google Ads 客户 ID:
可选:选择选项来排除已移除或已停用的项,并包含 Google Ads 中新生成的表。
可选:输入要包含的表的逗号分隔列表,例如
Campaign, AdGroup
。为此列表添加-
字符作为前缀,以排除某些表,例如-Campaign, AdGroup
。默认情况下,所有表均包含在内。可选:选择相应选项,添加专门针对效果最大化广告系列报告的表。如需详细了解效果最大化广告系列支持,请参阅效果最大化广告系列支持。
可选:对于刷新时段,请输入介于 1 到 30 之间的值。
在服务账号菜单中,从与您的 Google Cloud 项目关联的服务账号中选择一个服务账号。您可以将服务账号与转移作业相关联,而不是使用用户凭据。如需详细了解如何将服务账号用于数据转移,请参阅使用服务账号。
可选:在通知选项部分中,执行以下操作:
点击保存。
bq
输入 bq mk
命令并提供转移作业创建标志 --transfer_config
。此外,还必须提供以下标志:
--data_source
--target_dataset
--display_name
--params
以下标志是可选的:
--project_id
:指定要使用的项目。如果未指定此标志,则系统会使用默认项目。--table_filter
:指定要包含在转移作业中的表。如果未指定此标志,则包含所有表。如需仅包含特定表,请使用以英文逗号分隔的值列表(例如Ad
、Campaign
、AdGroup
)。如需排除特定表,请在值的前面加上连字符 (-
),例如-Ad
、Campaign
、AdGroup
。--service_account_name
:指定用于 Google Ads 转移作业身份验证的服务账号,而不是您的用户账号。
bq mk \ --transfer_config \ --project_id=project_id \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source \ --table_filter=tables --service_account_name=service_account_name
其中:
- project_id 是项目 ID。
- dataset 是转移作业配置的目标数据集。
- name 是转移作业配置的显示名。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。
- parameters 包含所创建转移作业配置的参数(采用 JSON 格式),例如
--params='{"param":"param_value"}'
。对于 Google Ads,您必须提供customer_id
参数。您可以选择将exclude_removed_items
参数设置为true
,以防止转移已移除或已停用的实体及指标。 - data_source 是数据源,即
google_ads
。 - tables 是转移作业中要包含或排除的表的英文逗号分隔列表。
- service_account_name 是用于对转移作业进行身份验证的服务账号名称。该服务账号必须属于用于创建转移作业的同一
project_id
,并且必须具有所有所需的权限。
例如,以下命令使用客户 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=google_ads
首次运行此命令时,您会收到如下消息:
[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 Ads 转移作业
如果您手动触发 Google Ads 转移作业,系统会每天截取一次匹配表的快照,并将其存储在与最近运行日期对应的分区中。触发手动转移作业时,以下表的匹配表快照不会更新:
- 广告
- AdGroup
- AdGroupAudience
- AdGroupBidModifier
- AdGroupAdLabel
- AdGroupCriterion
- AdGroupCriterionLabel
- AdGroupLabel
- AgeRange
- 资产
- AssetGroup
- AssetGroupAsset
- AssetGroupListingGroupFilter
- AssetGroupSignal
- 受众
- BidGoal
- Budget
- 宣传活动
- CampaignAudience
- CampaignCriterion
- CampaignLabel
- 客户
- Gender
- Keyword
- LocationBasedCampaignCriterion
- ParentalStatus
- Placement
- 视频
效果最大化广告系列支持
借助 Google Ads 连接器,您可以导出效果最大化广告系列数据。在创建数据转移作业时,您必须选中包含效果最大化广告系列表格复选框,因为在默认情况下,效果最大化广告系列数据不会导出。
添加效果最大化广告系列数据会从某些表中移除 ad_group
字段,并包含新表。您不能添加 ad_group
字段,因为 Google Ads API 会过滤效果最大化广告系列数据。
下表排除了选中包含效果最大化广告系列表格复选框时的 ad_group
相关列:
- GeoStats
- GeoConversionStats
- ShoppingProductConversionStats
- ShoppingProductStats
- LocationsUserLocationsStats
选中包含效果最大化广告系列表格复选框后,系统会添加以下表:
- 资产
- AssetGroup
- AssetGroupAsset
- AssetGroupListingGroupFilter
- AssetGroupSignal
- 受众
- AssetGroupProductGroupStats
- CampaignAssetStats
对 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 转移作业设置问题
如果您在设置转移作业时遇到问题,请参阅排查转移配置问题中的 Google Ads 转移问题。
查询数据
当数据转移到 BigQuery Data Transfer Service 时,系统会将其写入注入时间分区表。如需了解详情,请参阅分区表简介。
如果您要直接查询表,而不是使用自动生成的视图,那么必须在查询中使用 _PARTITIONTIME
伪列。如需了解详情,请参阅查询分区表。
Google Ads 示例查询
您可以使用以下 Google Ads 示例查询来分析已转移的数据。您还可以在 Looker 数据洞察等可视化工具中使用查询。这些查询旨在帮助您开始使用 BigQuery Data Transfer Service 来查询 Google Ads 数据。如果您对这些报告的功能有其他问题,请联系您的 Google Ads 技术代表。
在以下每个查询中,将 dataset 替换为您的数据集名称。将 customer_id 替换为 Google Ads 客户 ID。
如果您要直接查询表,而不是使用自动生成的视图,那么必须在查询中使用 _PARTITIONTIME
伪列。如需了解详情,请参阅查询分区表。
广告系列效果
以下示例查询分析了最近 30 天内 Google Ads 广告系列的效果。
控制台
SELECT c.customer_id, c.campaign_name, c.campaign_status, SUM(cs.metrics_impressions) AS Impressions, SUM(cs.metrics_interactions) AS Interactions, (SUM(cs.metrics_cost_micros) / 1000000) AS Cost FROM `DATASET.ads_Campaign_CUSTOMER_ID` c LEFT JOIN `DATASET.ads_CampaignBasicStats_CUSTOMER_ID` cs ON (c.campaign_id = cs.campaign_id 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.customer_id, c.campaign_name, c.campaign_status, SUM(cs.metrics_impressions) AS Impressions, SUM(cs.metrics_interactions) AS Interactions, (SUM(cs.metrics_cost_micros) / 1000000) AS Cost FROM `DATASET.ads_Campaign_CUSTOMER_ID` c LEFT JOIN `DATASET.ads_CampaignBasicStats_CUSTOMER_ID` cs ON (c.campaign_id = cs.campaign_id 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.campaign_status AS CampaignStatus, a.ad_group_status AS AdGroupStatus, k.ad_group_criterion_status AS KeywordStatus, k.ad_group_criterion_keyword_match_type AS KeywordMatchType, COUNT(*) AS count FROM `DATASET.ads_Keyword_CUSTOMER_ID` k JOIN `DATASET.ads_Campaign_CUSTOMER_ID` c ON (k.campaign_id = c.campaign_id AND k._DATA_DATE = c._DATA_DATE) JOIN `DATASET.ads_AdGroup_CUSTOMER_ID` a ON (k.ad_group_id = a.ad_group_id 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.campaign_status AS CampaignStatus, a.ad_group_status AS AdGroupStatus, k.ad_group_criterion_status AS KeywordStatus, k.ad_group_criterion_keyword_match_type AS KeywordMatchType, COUNT(*) AS count FROM `DATASET.ads_Keyword_CUSTOMER_ID` k JOIN `DATASET.ads_Campaign_CUSTOMER_ID` c ON (k.campaign_id = c.campaign_id AND k._DATA_DATE = c._DATA_DATE) JOIN `DATASET.ads_AdGroup_CUSTOMER_ID` a ON (k.ad_group_id = a.ad_group_id AND k._DATA_DATE = a._DATA_DATE) WHERE k._DATA_DATE = k._LATEST_DATE GROUP BY 1, 2, 3, 4'