Google Merchant Center 转移作业

借助适用于 Google Merchant Center 的 BigQuery Data Transfer Service,您可以自动安排和管理 Google Merchant Center 报告数据的周期性加载作业。

支持的报告

适用于 Google Merchant Center 的 BigQuery Data Transfer Service 支持以下数据:

商品和商品问题

商品和商品问题报告包括通过 Feed 或使用 Content API for Shopping 向 Merchant Center 提供的商品数据。此报告还包括 Google 检测到的商品项级别问题。您可以在 Google Merchant Center 中或通过查询 Content API for Shopping 来查看商品和商品问题数据。如需了解如何将此数据加载到 BigQuery,请参阅 Google Merchant Center 商品表架构

地区商品目录

地区商品目录报告包括有关商品的地区性库存状况和价格替换的更多商品数据。如需了解如何将此数据加载到 BigQuery 中,请参阅 Google Merchant Center 地区商品目录表架构

本地商品目录

本地商品目录包括有关商品的本地商品目录的更多商品数据。此报告包含有关本地价格、库存状况、数量、自提和店内商品位置的数据。如需了解如何将此数据加载到 BigQuery 中,请参阅 Google Merchant Center 本地商品目录表架构

性能

效果报告可提供对广告和非付费商品详情中的效果数据的精细细分。如需了解如何将此数据加载到 BigQuery 中,请参阅 Google Merchant Center 效果表架构

畅销商品

畅销商品报告提供的数据与 Google Merchant Center 界面中的数据相同,并支持回填至多 2 年前的国家/地区或类别的数据。其中包括关于购物广告和非付费商品详情中最受欢迎的商品和品牌的数据,以及您的商品目录中是否有这些商品和品牌。此报告基于 Google Merchant Center 提供的畅销商品报告。如需了解如何将此数据加载到 BigQuery 中,请参阅 Google Merchant Center 畅销商品表架构

价格竞争力

价格竞争力报告(以前称为价格基准报告)包括商品级别属性和价格基准数据,它基于通过 Google Merchant Center 提供的价格竞争力报告中的定义。如需了解如何将此数据加载到 BigQuery 中,请参阅 Google Merchant Center 价格竞争力表架构

价格分析

使用价格分析报告查看商品的建议售价,以及更新商品价格后的效果预测。使用价格分析报告可以帮助您更有效地为商品定价。如需详细了解如何使用此报告中的数据,请参阅使用价格分析报告改善商品定价。如需了解如何将此数据加载到 BigQuery 中,请参阅 Google Merchant Center 价格分析表架构

价格基准

如需了解如何将此数据加载到 BigQuery 中,请参阅 Google Merchant Center 价格基准表架构

热门品牌、热门商品和商品目录

热门商品、热门品牌和商品目录表包含有关购物广告和非付费商品详情中最受欢迎的商品和品牌的数据,以及您的商品目录中是否有这些商品和品牌。此报告基于 Google Merchant Center 提供的畅销商品报告

热门品牌、热门商品和商品目录报告由以下表组成:

  • BestSellers_TopProducts_ 是根据国家/地区和 Google 商品类别计算得出的热门商品的排名列表。此表体现来自所有购物广告和非付费商品详情中所有商家的数据。
  • BestSellers_TopProducts_Inventory_ 是热门商品与您的商品目录之间的映射表。
  • BestSellers_TopBrands_ 是根据国家/地区和 Google 商品类别计算得出的热门品牌的排名列表。它体现来自所有购物广告和非付费商品详情中所有商家的数据。

如需了解如何将畅销商品数据加载到 BigQuery 中,请参阅 Google Merchant Center 热门商品商品目录热门品牌表架构。

适用于 Google Merchant Center 的 BigQuery Data Transfer Service 支持以下报告选项:

报告选项 支持
时间表

可配置为每天、每周、每月或自定义。默认情况下,创建转移作业时,此项设置为每天。转移作业之间的最短间隔为 6 小时。

限制

某些报告可能有自己的限制条件,例如对于历史数据回填支持不同的时间长度。以下部分介绍每个报告的限制。

历史数据回填支持

各个报告对历史数据回填的支持不一定相同。下面列出了各个报告对历史数据回填的支持级别。

  • 商品和商品问题 - 14 天
  • 本地商品目录 - 14 天
  • 地区商品目录 - 14 天
  • 表现 - 2 年
  • 畅销商品 - 2 年
  • 价格竞争力 - 不支持回填
  • 价格分析 - 不支持回填

商品和商品问题

  • BigQuery 中的商品和商品问题数据不代表您的商家账号的实时视图。如需查看数据的时间轴,请参阅架构中的 product_data_timestamp 字段。

价格基准

  • 价格基准数据并不代表价格基准的实时视图。如需查看数据的时间轴,请参阅价格基准架构中的 price_benchmark_timestamp 字段。
  • 并非所有商品都有价格基准。

畅销商品

  • 并非所有国家/地区都包含排名数据。报告中包含的国家/地区(使用 ISO 3166-1 alpha-2):AT、AU、BE、BR、CA、CH、CZ、DE、DK、ES、FI、FR、GB、HU IE、IN、IT、JP、MX、NL、NO、NZ、PL、PT、RO、RU、SE、SK、TR、UA、US。
  • 畅销商品数据不代表品牌排名的实时视图。如需查看数据的时间轴,请参阅 BestSellers_TopProducts_BestSellers_TopBrands_ 架构中的 rank_timestamp 字段。
  • Products_ 表中可能会有含未映射到 BestSellers_TopBrands_ 表中的任何品牌的 google_brand_id 的行。
  • google_brand_id 字段中的品牌 ID 可能会随时间发生变化,以反映商家和品牌的变化性质。因此,无法保证长时间跟踪一组品牌。
  • 虽然品牌按多种不同类别进行排名,但 Products_ 表中的所有商品均采用叶类别。要加入非叶类别的品牌和商品,请使用 google_product_category_ids 字段(如畅销商品示例查询所示)。

多客户账号 (MCA) 支持

建议具有多个商家 ID 的现有客户配置父级多客户账号 (MCA)。 通过配置 MCA,您可以创建单个转移作业来覆盖您所有的商家 ID。

与使用单个商家 ID 相比,使用 Google Merchant Center MCA 具有多项优势:

  • 您无需再管理多个转移作业,即可为多个商家 ID 转移报告数据。
  • 由于所有商家 ID 的数据都存储在同一个表中,编写涉及多个商家 ID 的查询变得容易得多。
  • 使用 MCA 可以缓解潜在的 BigQuery 加载作业配额问题,因为您的所有商家 ID 数据都将加载到同一作业中。

使用 MCA 的一项可能的缺点是后续查询费用有可能较高。由于您的所有数据都存储在同一个表中,检索单个商家 ID 数据的查询仍然必须扫描整个表。

如果使用的是 MCA,则 MCA ID 将在 aggregator_id 下列出,各子账号将在 merchant_id 下列出。对于不使用 MCA 的账号,aggregator_id 将设置为 null

并非所有报告都支持 MCA。以下报告支持 MCA:

  • 商品和商品问题
  • 本地商品目录
  • 地区商品目录
  • 产品业绩
  • 价格竞争力
  • 价格分析

准备工作

在创建 Google Merchant Center 转移作业之前,请执行以下操作:

所需权限

请确保创建转移作业的人员拥有以下所需权限:

  • BigQuery

    • 创建转移作业所需的 bigquery.transfers.update 权限
    • 针对目标数据集的 bigquery.datasets.getbigquery.datasets.update 权限

    预定义的 IAM 角色 bigquery.admin 包含 bigquery.transfers.updatebigquery.datasets.updatebigquery.datasets.get 权限。如需详细了解 BigQuery Data Transfer Service 中的 IAM 角色,请参阅访问权限控制

  • Google Merchant Center

设置 Google Merchant Center 转移作业

为 Google Merchant Center 报告设置数据转移作业需要以下信息:

要如需Google Merchant Center 报告创建数据转移作业,请执行以下操作:

控制台

  1. 转到 Google Cloud 控制台中的 BigQuery 页面。

    转到 BigQuery 页面

  2. 点击数据传输

  3. 点击创建转移作业

  4. 创建转移作业页面上:

    • 来源类型部分的来源中,选择 Google Merchant Center

    • 转移配置名称部分的显示名中,输入转移作业的名称,例如 My Transfer。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。

      转移作业名称

    • 时间表选项部分中,执行以下操作:

      • 选择重复频率。如果您选择小时,则还必须指定频率。您还可以选择自定义来指定自定义重复频率。如果您选择按需,则当您手动触发转移作业时,此转移作业会运行。

      • 如果适用,请选择立即开始在设置的时间开始,并提供开始日期和运行时间。

      • 开始日期和运行时间部分,输入开始转移作业的日期和时间。此值应该比当前世界协调时间 (UTC) 至少晚 24 小时。如果选择立即开始,则此选项处于停用状态。

        转移作业时间安排

        如果将时间表选项设置为立即开始,则第一次转移作业将立即开始运行,它将失败,并显示以下错误消息:No data to transfer found for the Merchant account. If you have just created this transfer, you may need to wait for up to a day before the data of your Merchant account are prepared and available for the transfer.。安排的下一次运行应会成功。如果您的商家账号数据在采用世界协调时间 (UTC) 的同一日期准备就绪,则可以为当天的运行设置回填

    • 目标设置部分的目标数据集中,选择您创建用来存储数据的数据集。

      转移作业数据集

    • 数据源详细信息部分的商家 ID 中,输入您的商家 ID 或 MCA ID。

      选择您要转移的报告。如需了解详情,请参阅支持的报告

      Google Merchant Center 转移作业数据。

    • 服务账号菜单中,从与您的 Google Cloud 项目关联的服务账号中选择一个服务账号。您可以将服务账号与转移作业相关联,而不是使用用户凭据。如需详细了解如何将服务账号用于数据转移,请参阅使用服务账号

      • 如果您使用联合身份登录,则需要有服务账号才能创建转移作业。如果您使用 Google 账号登录,则转移作业的服务账号是可选的。
      • 服务账号必须具有所需的权限
    • (可选)在通知选项部分,执行以下操作:

      • 点击切换开关以启用电子邮件通知。启用此选项后,转移作业管理员会在转移作业运行失败时收到电子邮件通知。
      • 选择 Pub/Sub 主题部分,选择您的主题名称,或点击创建主题。此选项用于为您的转移作业配置 Pub/Sub 运行通知
  5. 点击保存

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
--service_account_name=service_account_name

其中:

  • project_id 是项目 ID。
  • dataset 是转移作业配置的目标数据集。
  • name 是转移作业配置的显示名。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。
  • parameters 包含所创建转移作业配置的参数(采用 JSON 格式),例如:--params='{"param":"param_value"}'
    • 对于 Google Merchant Center 转移作业,您必须提供 merchant_id 参数。
    • export_products 参数指定是否转移商品和商品问题数据。即使您未指定 export_products 参数,系统也会默认包含此参数。Google 建议您明确添加此参数,并将其设置为“true”。
    • export_regional_inventories 参数指定是否转移地区商品目录数据。
    • export_local_inventories 参数指定是否转移本地商品目录数据。
    • export_price_competitiveness 参数指定是否转移价格竞争力数据。
    • export_price_insights 参数指定是否转移价格分析数据。
    • export_best_sellers_v2 参数指定是否转移畅销商品数据。
    • export_performance 参数指定是否转移产品业绩数据。
  • data_source 是数据源,即 merchant_center
  • service_account_name 是用于对转移作业进行身份验证的服务账号名称。该服务账号应属于用于创建转移作业的同一 project_id,并且应具有所有所需的权限

例如,以下命令使用商家 ID 1234 和目标数据集 mydataset 创建名为 My Transfer 的 Google Merchant Center 转移作业。该转移作业将在默认项目中创建。

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"merchant_id":"1234","export_products":"true","export_regional_inventories":"true","export_local_inventories":"true","export_price_benchmarks":"true","export_best_sellers":"true"}' \
--data_source=merchant_center

首次运行此命令时,您会收到如下消息:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

请按照该消息中的说明操作,并将身份验证代码粘贴到命令行中。

如果您刚刚创建了此转移作业,则最长可能需要等待一天,您的商家账号的数据才会准备就绪,可进行转移。安排的下一次运行应会成功。如果您的商家账号数据在采用世界协调时间 (UTC) 的同一日期准备就绪,则可以为当天的运行设置回填

API

使用 projects.locations.transferConfigs.create 方法并提供一个 TransferConfig 资源实例。

排查 Google Merchant Center 转移作业设置问题

如果您在设置转移作业时遇到问题,请参阅排查 BigQuery Data Transfer Service 转移作业设置问题中的 Google Merchant Center 转移作业问题

查询数据

当数据转移到 BigQuery 时,这些数据会写入注入时间分区表。如需了解详情,请参阅分区表简介

查询 Google Merchant Center 表时,必须在查询中使用 _PARTITIONTIME_PARTITIONDATE 伪列。 如需了解详情,请参阅查询分区表

Products_ 表包含嵌套和重复的字段。如需了解如何处理嵌套和重复的数据,请参阅 GoogleSQL 文档中的重复字段处理的差异

Google Merchant Center 示例查询

您可以使用以下 Google Merchant Center 示例查询来分析转移的数据。您还可以在 Looker 数据洞察等可视化工具中使用查询。

在以下每个查询中,将 dataset 替换为您的数据集名称。将 merchant_id 替换为您的商家 ID。如果您使用的是 MCA,请将 merchant_id 替换为您的 MCA ID。

商品和商品问题示例查询

商品和商品问题统计信息

以下示例 SQL 查询按天提供商品数、问题商品数和问题数。

SELECT
  _PARTITIONDATE AS date,
  COUNT(*) AS num_products,
  COUNTIF(ARRAY_LENGTH(issues) > 0) AS num_products_with_issues,
  SUM(ARRAY_LENGTH(issues)) AS num_issues
FROM
  dataset.Products_merchant_id
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD'
GROUP BY
  date
ORDER BY
  date DESC

未获批准在购物广告中展示的商品

以下示例 SQL 查询提供了未获批准在购物广告中展示的商品数量(按国家/地区分隔)。未获批准的原因可能是目标页面被排除或商品存在问题。

SELECT
  _PARTITIONDATE AS date,
  disapproved_country,
  COUNT(*) AS num_products
FROM
  dataset.Products_merchant_id,
  UNNEST(destinations) AS destination,
  UNNEST(disapproved_countries) AS disapproved_country
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD'
GROUP BY
  date, disapproved_country
ORDER BY
  date DESC

存在未获批准问题的商品

以下示例 SQL 查询会检索存在未获批准问题的商品数量(按国家/地区分隔)。

SELECT
  _PARTITIONDATE AS date,
  applicable_country,
  COUNT(DISTINCT CONCAT(CAST(merchant_id AS STRING), ':', product_id))
      AS num_distinct_products
FROM
  dataset.Products_merchant_id,
  UNNEST(issues) AS issue,
  UNNEST(issue.applicable_countries) as applicable_country
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD' AND
  issue.servability = 'disapproved'
GROUP BY
  date, applicable_country
ORDER BY
  date DESC

价格基准示例查询

将商品价格与基准进行对比

以下 SQL 查询会联接 ProductsPrice Benchmarks 数据以返回商品列表和关联的基准。

WITH products AS
(
  SELECT
    _PARTITIONDATE AS date,
    *
  FROM
    dataset.Products_merchant_id
  WHERE
   _PARTITIONDATE >= 'YYYY-MM-DD'
),
benchmarks AS
(
  SELECT
    _PARTITIONDATE AS date,
    *
  FROM
    dataset.Products_PriceBenchmarks_merchant_id
  WHERE
    _PARTITIONDATE >= 'YYYY-MM-DD'
)
SELECT
  products.date,
  products.product_id,
  products.merchant_id,
  products.aggregator_id,
  products.price,
  products.sale_price,
  benchmarks.price_benchmark_value,
  benchmarks.price_benchmark_currency,
  benchmarks.country_of_sale
FROM
  products
INNER JOIN
  benchmarks
ON products.product_id = benchmarks.product_id AND
   products.merchant_id = benchmarks.merchant_id AND
   products.date = benchmarks.date

畅销商品示例查询

给定类别和国家/地区的热门商品

以下 SQL 查询返回美国“智能手机”类别的热门商品。

SELECT
  rank,
  previous_rank,
  relative_demand.bucket,
  (SELECT name FROM top_products.product_title WHERE locale = 'en-US') AS product_title,
  brand,
  price_range
FROM
  dataset.BestSellers_TopProducts_merchant_id AS top_products
WHERE
  _PARTITIONDATE = 'YYYY-MM-DD' AND
  ranking_category = 267 /*Smartphones*/ AND
  ranking_country = 'US'
ORDER BY
  rank

您的商品目录中的热门商品

以下 SQL 查询会联接 BestSellers_TopProducts_Inventory_BestSellers_TopProducts_ 数据以返回您的商品目录中拥有的热门商品列表。

WITH latest_top_products AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
),
latest_top_products_inventory AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_Inventory_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
)
SELECT
  top_products.rank,
  inventory.product_id,
  (SELECT ANY_VALUE(name) FROM top_products.product_title) AS product_title,
  top_products.brand,
  top_products.gtins
FROM
  latest_top_products AS top_products
INNER JOIN
  latest_top_products_inventory AS inventory
USING (rank_id)

给定类别和国家/地区的热门品牌

以下 SQL 查询返回美国“智能手机”类别的热门品牌。

SELECT
  rank,
  previous_rank,
  brand
FROM
  dataset.BestSellers_TopBrands_merchant_id
WHERE
  _PARTITIONDATE = 'YYYY-MM-DD' AND
  ranking_category = 267 /*Smartphones*/ AND
  ranking_country = 'US'
ORDER BY
  rank

商品目录中热门品牌的商品

以下 SQL 查询返回商品目录中热门品牌的商品列表(按类别和国家/地区列出)。

  WITH latest_top_brands AS
  (
    SELECT
      *
    FROM
      dataset.BestSellers_TopBrands_merchant_id
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD'
  ),
  latest_products AS
  (
    SELECT
      product.*,
      product_category_id
    FROM
      dataset.Products_merchant_id AS product,
      UNNEST(product.google_product_category_ids) AS product_category_id,
      UNNEST(destinations) AS destination,
      UNNEST(destination.approved_countries) AS approved_country
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD'
  )
  SELECT
    top_brands.brand,
    (SELECT name FROM top_brands.ranking_category_path
    WHERE locale = 'en-US') AS ranking_category,
    top_brands.ranking_country,
    top_brands.rank,
    products.product_id,
    products.title
  FROM
    latest_top_brands AS top_brands
  INNER JOIN
    latest_products AS products
  ON top_brands.google_brand_id = products.google_brand_id AND
     top_brands.ranking_category = product_category_id AND
     top_brands.ranking_country = products.approved_country