Google Ad Manager 转移作业
通过适用于 Google Ad Manager 的 BigQuery Data Transfer Service 连接器,您可以自动创建和管理 Google Ad Manager(以前称为 DFP 广告管理系统)报告数据的周期性加载作业。
支持的报告
适用于 Google Ad Manager 的 BigQuery Data Transfer Service 连接器支持以下报告选项:
- 数据转移作业 (Google Ad Manager DT) 文件
- 数据转移作业字段
- BigQuery Data Transfer Service 提供的匹配表。这些表会自动创建和更新。
- 使用 PQL 提取的匹配表
- 来自 CompanyService 的匹配表 (v201908)
- 来自 OrderService 的匹配表 (v201908)
- 来自 PlacementService 的匹配表 (v201908)
如需了解 Google Ad Manager 报告如何转换为 BigQuery 表和视图,请参阅 Google Ad Manager 报告转换。
报告选项 | 支持 |
---|---|
重复频率 | 每 8 小时(基于创建时间)。 不可配置 |
刷新时段 | 过去 2 天 不可配置 |
最大回填时长 | 过去 60 天 Google Ad Manager 最多可将数据转移文件保留 60 天。保存时间超过 60 天的文件会被 Google Ad Manager 删除。 |
从 Google Ad Manager 转移作业注入数据
当您将数据从 Google Ad Manager 转移到 BigQuery 时,数据会加载到按日期分区的 BigQuery 表中。数据加载到的表分区对应于数据源中的日期。如果您在同一日期安排多次转移,BigQuery Data Transfer Service 会使用最新数据覆盖该特定日期的分区。同一天的多个转移作业或正在运行的回填不会导致重复数据,其他日期的分区不受影响。刷新时段
刷新时段是指发生数据转移时数据转移检索数据的天数。例如,如果刷新时段为三天,并且每天进行转移,则 BigQuery Data Transfer Service 会从过去三天内的源表中检索所有数据。在此示例中,当每天进行转移时,BigQuery Data Transfer Service 会使用当前日期的源表数据副本创建新的 BigQuery 目标表分区,然后自动触发回填运行作业,以使用过去两天的源表数据来更新 BigQuery 目标表分区。自动触发的回填运行作业会覆盖或以增量方式更新 BigQuery 目标表,具体取决于 BigQuery Data Transfer Service 连接器是否支持增量更新。
首次运行数据转移作业时,数据转移作业会检索刷新时段内可用的所有源数据。例如,如果刷新时段为三天,并且您首次运行数据转移作业,则 BigQuery Data Transfer Service 会检索三天内的所有源数据。
刷新时段会映射到 TransferConfig.data_refresh_window_days
API 字段。
如需检索刷新时段之外的数据(例如历史数据),或在出现任何转移中断或缺口时恢复数据,您可以启动或安排回填运行作业。
准备工作
在创建 Google Ad Manager 数据转移作业之前,请完成以下事项:
- 确认您已完成启用 BigQuery Data Transfer Service 所需的全部操作。
- 创建 BigQuery 数据集以存储 Google Ad Manager 数据。
-
确保您的组织有权访问 Google Ad Manager 数据转移 (Google Ad Manager DT) 文件。 这些文件由 Google Ad Manager 团队提交到 Cloud Storage 存储桶。如需获得对 Google Ad Manager DT 文件的访问权限,请查看 Ad Manager 数据转移报告。Google Ad Manager 团队可能会收取额外费用。
完成此步骤后,您将收到类似于以下名称的 Cloud Storage 存储桶:
gdfp-12345678
Google Cloud 团队不能代表您生成或授予对 Google Ad Manager DT 文件的访问权限。请联系 Google Ad Manager 支持团队,获取对 Google Ad Manager DT 文件的访问权限。
- 启用对 Google Ad Manager 网络的 API 访问权限。
- 如果您想要设置数据转移作业通知,则必须拥有 Pub/Sub 的
pubsub.topics.setIamPolicy
权限。如果您只是要设置电子邮件通知,则无需 Pub/Sub 权限。如需了解详情,请参阅 BigQuery Data Transfer Service 运行通知。
所需权限
BigQuery:确保创建数据转移作业的人员在 BigQuery 中拥有以下权限:
- 用于创建数据转移作业的
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 Ad Manager:存储在 Cloud Storage 中的 Google Ad Manager DT 文件的读取权限。对 Google Ad Manager DT 文件的权限由 Google Ad Manager 团队负责管理。除了 Google Ad Manager DT 文件之外,还必须将创建数据转移作业的人员添加到 Google Ad Manager 广告资源网中,并且该人员拥有创建各种匹配表(订单项、订单、广告单元等)所需的全部实体的读取权限。为此,您可以将验证数据转移作业身份的 Ad Manager 用户添加到 Ad Manager 中的“所有实体”小组。
设置 Google Ad Manager 转移作业
为 Google Ad Manager 设置 BigQuery 数据转移作业需要提供以下信息:
Cloud Storage 存储桶:您的 Google Ad Manager DT 文件的 Cloud Storage 存储桶 URI(如准备工作中所述)。存储桶名称应类似于:
gdfp-12345678
网络代码:在登录网络后,您将在网址中找到 Google Ad Manager 的网络代码。例如,在网址
https://admanager.google.com/2032576#delivery
中,2032576
是您的网络代码。如需了解详情,请参阅 Google Ad Manager 使用入门。
如需为 Google Ad Manager 创建 BigQuery Data Transfer Service 数据转移作业,请执行以下操作:
控制台
前往 Google Cloud 控制台中的“数据转移”页面。
点击
创建转移作业。在创建转移作业页面上:
在来源类型部分的来源中,选择 Google Ad Manager。
在转移配置名称部分的显示名称中,输入数据转移作业的名称,例如
My Transfer
。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。在目标设置部分的目标数据集中,选择您创建用来存储数据的数据集。
在数据源详细信息部分,执行以下操作:
- 在 Cloud Storage 存储桶部分,输入存储数据转移文件的 Cloud Storage 存储桶的名称。当您输入存储桶名称时,请不要包含
gs://
。 在网络代码 (Network code) 部分,输入您的网络代码。
- 在 Cloud Storage 存储桶部分,输入存储数据转移文件的 Cloud Storage 存储桶的名称。当您输入存储桶名称时,请不要包含
在服务账号菜单中,从与您的 Google Cloud 项目关联的服务账号中选择一个服务账号。您可以将服务账号与转移作业相关联,而不是使用用户凭据。如需详细了解如何将服务账号用于数据转移,请参阅使用服务账号。
(可选)在通知选项部分,执行以下操作:
点击保存。
bq
输入 bq mk
命令并提供转移作业创建标志 --transfer_config
。此外,还必须提供以下标志:
--data_source
--target_dataset
--display_name
--params
可选标志:
--service_account_name
- 指定用于 Google Ad Manager 转移作业身份验证的服务账号,而不是您的用户账号。
bq mk --transfer_config \ --project_id=project_id \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source \ --service_account_name=service_account_name
其中:
- project_id 是项目 ID。
- dataset 是转移作业配置的目标数据集。
- name 是数据转移作业配置的显示名称。转移作业名称可以是任何可让您以后在需要修改数据转移作业时识别该数据转移作业的值。
- parameters 包含所创建转移作业配置的参数(采用 JSON 格式),例如
--params='{"param":"param_value"}'
。对于 Google Ad Manager,您必须提供bucket
和network_code
参数。bucket
是包含您的 Google Ad Manager DT 文件的 Cloud Storage 存储桶。network_code
是您的网络代码。 - data_source 是数据源 -
dfp_dt
(Google Ad Manager)。 - service_account_name 是用于对数据转移作业进行身份验证的服务账号名称。该服务账号应属于用于创建转移作业的同一
project_id
,并且应具有所有所需的权限。
您还可以提供 --project_id
标志以指定具体项目。如果未指定 --project_id
,系统会使用默认项目。
例如,以下命令使用网络代码 12345678
、Cloud Storage 存储桶 gdfp-12345678
和目标数据集 mydataset
创建一个名为 My Transfer
的 Google Ad Manager 数据转移作业。该数据转移作业在默认项目中创建:
bq mk --transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"bucket": "gdfp-12345678","network_code": "12345678"}' \
--data_source=dfp_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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
排查 Google Ad Manager 转移作业设置问题
如果您在设置数据转移作业时遇到问题,请参阅排查转移作业配置问题中的 Google Ad Manager 转移作业问题。
查询数据
当数据转移到 BigQuery 时,这些数据会写入注入时间分区表。如需了解详情,请参阅分区表简介。
如果您要直接查询表,而不是使用自动生成的视图,则必须在查询中使用 _PARTITIONTIME
伪列。如需了解详情,请参阅查询分区表。
Google Ad Manager 示例查询
您可以使用以下 Google Ad Manager 示例查询来分析已转移的数据。您还可以在 Looker 数据洞察等可视化工具中使用查询。这些查询旨在帮助您开始使用 BigQuery 来查询 Google Ad Manager 数据。如果您对这些报告的功能有其他问题,请联系您的 Google Ad Manager 技术代表。
在以下每个查询中,将 dataset 等变量替换为您的值。例如,将 network_code 替换为您的 Google Ad Manager 网络代码。
展示次数和唯一身份用户数(按城市)
以下示例 SQL 查询会分析过去 30 天内的展示次数和唯一身份用户数(按城市)。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT City, _DATA_DATE AS Date, count(*) AS imps, count(distinct UserId) AS uniq_users FROM `dataset.NetworkImpressionsnetwork_code` WHERE _DATA_DATE BETWEEN start_date AND end_date GROUP BY City, Date
展示次数和唯一身份用户数(按订单项类型)
以下示例 SQL 查询会分析过去 30 天内的展示次数和唯一身份用户数(按订单项类型)。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT MT.LineItemType AS LineItemType, DT._DATA_DATE AS Date, count(*) AS imps, count(distinct UserId) AS uniq_users FROM `dataset.NetworkImpressionsnetwork_code` AS DT LEFT JOIN `dataset.MatchTableLineItem_network_code` AS MT ON DT.LineItemId = MT.Id WHERE DT._DATA_DATE BETWEEN start_date AND end_date GROUP BY LineItemType, Date ORDER BY Date desc, imps desc
展示次数(按广告单元)
以下示例 SQL 查询会分析过去 30 天内的展示次数(按广告单元)。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT MT.AdUnitCode AS AdUnitCode, DT.DATA_DATE AS Date, count(*) AS imps FROM `dataset.NetworkImpressionsnetwork_code` AS DT LEFT JOIN `dataset.MatchTableLineItem_network_code` AS MT ON DT.AdUnitId = MT.Id WHERE DT._DATA_DATE BETWEEN start_date AND end_date GROUP BY AdUnitCode, Date ORDER BY Date desc, imps desc
展示次数(按订单项)
以下示例 SQL 查询会分析过去 30 天内的展示次数(按订单项)。
# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY) # END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) SELECT MT.Name AS LineItemName, DT._DATA_DATE AS Date, count(*) AS imps FROM `dataset.NetworkImpressionsnetwork_code` AS DT LEFT JOIN `dataset.MatchTableLineItem_network_code` AS MT ON DT.LineItemId = MT.Id WHERE DT._DATA_DATE BETWEEN start_date AND end_date GROUP BY LineItemName, Date ORDER BY Date desc, imps desc