安排 Facebook Ads 转移作业
借助适用于 Facebook Ads 的 BigQuery Data Transfer Service 连接器,您可以自动安排和管理从 Facebook Ads 到 BigQuery 的周期性加载作业。
限制
Facebook Ads 数据转移作业受到以下限制:
- 周期性 Facebook Ads 数据转移作业之间的最短间隔时间为 24 小时。周期性数据转移作业的默认间隔时间为 24 小时。
- 适用于 Facebook Ads 的 BigQuery Data Transfer Service 仅支持一组固定的表。不支持自定义报告。
- Facebook Ads 数据转移作业的时长上限为 6 小时。如果转移作业的时长超过此上限,则转移作业会失败。
AdInsights
和AdInsightsActions
表不支持增量转移。如果您创建包含AdInsights
和AdInsightsActions
表的数据转移作业,并且在时间表选项中指定了日期,则该日期可用的所有数据都是已转移。- BigQuery Data Transfer Service 支持将刷新时段设为 1 天,以便将数据转移到
AdInsights
和AdInsightsActions
表。刷新时段是指数据转移作业从中检索源数据的天数。首次运行数据转移作业时,数据转移作业会检索刷新时段内可用的所有源数据。 Facebook Ads 转移作业所需的长期有效的用户访问令牌会在 60 天后过期。
如果长期有效的用户访问令牌已过期,您可以前往数据转移作业详情,然后点击修改以获取新的令牌。在修改转移作业页面中,按照 Facebook Ads 前提条件中的步骤生成新的长期有效的用户访问令牌。
从 Facebook Ads 转移作业注入数据
当您将数据从 Facebook Ads 转移到 BigQuery 时,系统会将数据加载到按日期分区的 BigQuery 表中。数据加载到的表分区对应于数据源中的日期。如果您在同一日期安排多次转移,BigQuery Data Transfer Service 会使用最新数据覆盖该特定日期的分区。同一天的多个转移作业或正在运行的回填不会导致重复数据,其他日期的分区不受影响。对于 AdInsights
和 AdInsightsAction
表,数据加载到的表分区对应于数据源中的日期。
对于 AdAccounts
表,快照每天截取一次,并存储在与上一次转移作业运行日期对应的分区中。刷新时段不适用于 AdAccounts
表。
准备工作
以下部分介绍了在创建 Facebook Ads 数据转移作业之前需要执行的步骤。
Facebook Ads 前提条件
创建 Facebook Ads 数据转移作业时,请确保您提供以下 Facebook Ads 信息。
Facebook Ads 参数 | 说明 |
---|---|
clientID |
OAuth 2.0 客户端的应用 ID 名称。 |
clientSecret |
OAuth 2.0 客户端的应用密钥。 |
refreshToken |
长期有效的用户访问令牌,也称为“刷新”令牌。 |
如需获取 clientID
和 clientSecret
,请执行以下步骤:
- 创建 Facebook 开发者应用,应用类型为
Business
。 - 在 Facebook 应用面板中,点击应用设置 > 基本,然后找到该应用对应的应用 ID 和应用密钥。
如需获取长期有效的用户访问令牌(也称为“刷新”令牌),请执行以下步骤:
在 Google Cloud 控制台中,继续执行创建 Facebook Ads 转移作业的步骤。
在数据源详细信息部分中,复制刷新令牌字段后列出的重定向 URI。
点击 Facebook 应用面板,然后点击企业版 Facebook 登录部分中的设置。
在 Settings(设置)页面的 Valid OAuth Redirect URIs(有效的 OAuth 重定向 URI)字段中输入重定向网址,然后点击 Save(保存)。
返回 Google Cloud 控制台。在数据源详细信息部分中,点击授权。系统会将您重定向至 Facebook 身份验证页面。
选择 Facebook 开发者应用,以授权与 BigQuery Data Transfer Service 关联的账号。
完成后,点击知道了以返回 Google Cloud 控制台。长期有效的用户访问令牌现已填充到转移作业配置中。
长期用户访问令牌会在 60 天后过期。 如需了解如何获取新的长期有效的用户访问令牌,请参阅限制。
刷新令牌替代方案
或者,如果您已使用以下任一方法获取刷新令牌,则可以在创建数据传输时提供刷新令牌:
- 使用 Graph API 生成长期有效的用户访问令牌。用于数据转移作业的有效令牌需要
ads_management
、ads_read
和business_management
权限。 - 生成系统用户令牌。通过系统用户令牌,您可以手动添加要包含在数据转移作业中的资产(例如广告账号)。如果系统用户令牌已过期,则您必须使用新凭据手动更新转移作业配置。您还可以在创建系统用户令牌时选择创建不会过期的令牌。如需了解详情,请参阅支持的访问令牌。
BigQuery 前提条件
- 确认您已完成启用 BigQuery Data Transfer Service 所需的所有操作。
- 创建 BigQuery 数据集来存储数据。
- 如果您想要为 Pub/Sub 设置转移作业运行通知,请确保拥有
pubsub.topics.setIamPolicy
Identity and Access Management (IAM) 权限。如果您只设置电子邮件通知,则无需 Pub/Sub 权限。如需了解详情,请参阅 BigQuery Data Transfer Service 运行通知。
所需 BigQuery 角色
如需获得创建转移作业所需的权限,请让您的管理员为您授予 BigQuery Admin (roles/bigquery.admin
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色可提供创建转移作业所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建转移作业需要以下权限:
-
针对用户的
bigquery.transfers.update
权限 -
针对目标数据集的
bigquery.datasets.get
权限 -
针对目标数据集的
bigquery.datasets.update
权限
创建 Facebook Ads 数据转移作业
从下列选项中选择一项:
控制台
前往 Google Cloud 控制台中的“数据转移”页面。
点击
创建转移作业。在来源类型部分的来源中,选择 Facebook Ads。
在数据源详细信息部分中,执行以下操作:
- 在客户端 ID 部分,输入应用 ID。
- 在客户端密钥部分,输入应用密钥。
在刷新令牌部分,点击授权以输入长期有效的用户访问令牌 ID。 或者,如果您已经拥有刷新令牌或系统用户令牌,则可以直接在此字段中输入刷新令牌。
如需了解如何检索长期有效的用户访问令牌,请参阅 Facebook Ads 前提条件。
在目标设置部分的数据集中,选择您创建用来存储数据的数据集。
在转移配置名称部分的显示名称中,输入数据转移作业的名称。
在时间表选项部分中,执行以下操作:
在重复频率列表中,选择一个选项来指定此数据转移作业的运行频率。如需指定自定义重复频率,请选择自定义。如果您选择按需,则当您手动触发转移作业时,此转移作业会运行。
如果适用,请选择立即开始或在设置的时间开始,并提供开始日期和运行时间。
可选:在服务账号菜单中,从与您的 Google Cloud 项目关联的服务账号中选择一个服务账号。所选服务账号必须具有所需的角色才能运行此数据转移作业。
如果您使用联合身份登录,则需要有服务账号才能创建数据转移作业。如果您使用 Google 账号登录,则数据转移作业的服务账号是可选的。
如需详细了解如何将服务账号用于数据转移,请参阅使用服务账号。
可选:在通知选项部分中,执行以下操作:
- 如需启用电子邮件通知,请点击电子邮件通知切换开关。启用此选项后,传输作业管理员会在传输作业运行失败时收到电子邮件通知。
- 如需为此数据转移作业启用 Pub/Sub 转移作业运行通知,请点击 Pub/Sub 通知切换开关。您可以选择主题名称,也可以点击创建主题来创建某个主题。
点击保存。
当此数据转移作业运行时,BigQuery Data Transfer Service 会自动填充以下表。
表名称 | 说明 |
---|---|
AdAccounts |
可供用户使用的广告账号。 |
AdInsights |
所有广告账号的广告数据分析报告。 |
AdInsightsActions |
所有广告账号的广告数据分析操作报告。 |
bq
输入 bq mk
命令并提供转移作业创建标志 --transfer_config
:
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
其中:
- PROJECT_ID(可选):您的 Google Cloud 项目 ID。如果未提供
--project_id
来指定具体项目,则系统会使用默认项目。 - DATA_SOURCE:数据源(例如
facebook-ads
)。 - DISPLAY_NAME:数据转移作业配置的显示名称。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。
- DATASET:数据转移作业配置的目标数据集。
- PARAMETERS:所创建数据转移作业配置的参数(采用 JSON 格式)。 例如
--params='{"param":"param_value"}'
。以下是 Facebook Ads 转移作业的参数:connector.authentication.oauth.clientId
:OAuth 2.0 客户端的应用 ID 名称。connector.authentication.oauth.clientSecret
:OAuth 2.0 客户端的应用密钥。connector.authentication.oauth.refreshToken
:长期有效的令牌 ID。
例如,以下命令会使用所有必需参数在默认项目中创建 Facebook Ads 数据转移作业:
bq mk \ --transfer_config \ --target_dataset=mydataset \ --data_source=facebook_ads \ --display_name='My Transfer' \ --params='{"connector.authentication.oauth.clientId": "1650000000", "connector.authentication.oauth.clientSecret":"TBA99550", "connector.authentication.oauth.refreshToken":"abcdef"}'
API
使用 projects.locations.transferConfigs.create
方法并提供一个 TransferConfig
资源实例。
排查转移作业配置问题
如果您在设置 Facebook Ads 数据转移作业时遇到问题,请尝试以下问题排查步骤:
- 使用 Facebook 访问令牌调试程序检查用户访问令牌是否已过期。长期有效的用户访问令牌会在 60 天后过期。如果长期有效的用户访问令牌已过期,请前往转移作业详情,然后点击修改以修改转移作业配置。在修改转移作业页面中,按照 Facebook Ads 前提条件中的步骤生成新的令牌。
- 检查是否生成了具有所需权限(
ads_management
、ads_read
和business_management
)的长期有效的用户访问令牌。如果没有,请按照 Facebook Ads 前提条件中的步骤生成新的长期有效的用户访问令牌。 - 检查 Facebook 应用信息中心上的必需操作标签页,查找需要注意的所有项。
您可能会遇到与 Meta API 速率限制错误相关的以下错误消息:
- 错误:
There have been too many calls from this ad-account. Wait a bit and try again.
- 解决方法:检查是否没有使用相同应用或凭据的并行工作流。如果这些错误仍然存在,请尝试将权限升级到高级访问权限,以获得更多速率限制配额。如需了解详情,请参阅 Marketing API 速率限制。
常见的监控指标消息
您还可以检查 BigQuery Data Transfer Service 监控指标,以确定数据转移作业失败的原因。下表列出了 Facebook Ads 数据转移作业的一些常见 ERROR_CODE
消息。
错误 | 说明 |
---|---|
INVALID_ARGUMENT |
提供的配置无效 |
PERMISSION_DENIED |
凭据无效 |
UNAUTHENTICATED |
必须进行身份验证 |
SERVICE_UNAVAILABLE |
服务暂时无法处理此数据转移作业 |
DEADLINE_EXCEEDED |
数据转移作业未在最长时长 6 小时内完成 |
NOT_FOUND |
找不到请求的资源 |
INTERNAL |
其他问题导致连接器失败 |
RESOURCE_EXHAUSTED |
超出数据源配额或限制 |
价格
此功能处于预览版阶段,因此将 Facebook Ads 数据转移到 BigQuery 无需付费。
后续步骤
- 详细了解 BigQuery Data Transfer Service。
- 详细了解处理转移作业,例如查看配置和运行历史记录。
- 了解如何通过跨云操作加载数据。