查询结构

您可以将针对指标和细分字段的查询发送到 reports.search 方法。若要使用 Merchant Center 查询语言构建查询,您需要先使用语言语法撰写查询。查询由多个子句组成:

  • SELECT
  • FROM
  • WHERE
  • ORDER BY
  • LIMIT

这些子句会使用字段名称、表名称、运算符、条件和排序,帮您选出所需的数据。在将它们合并为一个查询后,就可以使用 Google Content API for Shopping 发出请求。我们来看看如何使用每个子句。

条款

选择

SELECT 子句指定要在请求中获取的一组字段。SELECT 会获取以英文逗号分隔的细分字段和指标列表,然后在响应中返回值。SELECT 子句在查询中是必需子句。

以下是一个从指定表中选择点击指标的查询示例:

SELECT
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN 2020-08-01 AND 2020-08-31

您还可以在单个请求中查询不同的字段类型:

SELECT
  segments.date,
  segments.program,
  metrics.impressions,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN 2020-08-01 AND 2020-08-31
  • 细分字段

    • segments.date
    • segments.program
  • 指标

    • metrics.impressions
    • metrics.clicks

由于以下限制,某些字段不允许在 SELECT 子句中使用:

  • 查询细分字段,但未包含至少一个指标字段。

如需了解与上述情况相关的信息,请参阅我们的参考文档。

FROM

FROM 子句指定请求中要从中提取数据的表。FROM 子句中的表定义了给定查询的所有其他子句可以使用哪些字段。FROM 子句中只能指定一个表。目前,仅支持 MerchantPerformanceView 表。 在对 reports 服务的 search 方法的查询中,FROM 子句是必需子句。

WHERE

借助 WHERE 子句,您可以在为相关请求过滤数据时指定要应用的条件。使用 WHERE 子句时,可以指定一个或多个条件,并使用 AND 将其分隔开。每个条件都应遵循 field_name Operator value 这一格式。任何细分字段都可在 WHERE 子句中使用,但指标字段需要在 SELECT 子句中指定,才能在 WHERE 子句中使用。查询中WHERE子句是必需的,因为您必须始终指定要返回效果数据的日期范围。

以下示例演示了如何使用 WHERE 返回指定时间段的指标:

SELECT
  segments.offer_id,
  metrics.impressions
FROM MerchantPerformanceView
WHERE segments.date BETWEEN 2020-08-01 AND 2020-08-31

您可以结合使用多个条件来过滤数据。此示例将返回 SHOPPING_ADS 计划中每个优惠的点击次数,其中点击次数在指定 30 天时间段内大于 100。

SELECT
  segments.offer_id,
  segments.program,
  metrics.clicks
FROM MerchantPerformanceView
WHERE metrics.clicks > 100
  AND segments.program = SHOPPING_ADS
  AND segments.date BETWEEN 2020-08-01 AND 2020-08-31;

在以下查询中,您会注意到选择了 segments.date。 无论您是否选择 segments.date,都必须在 WHERE 子句中提供有限的日期范围,才能检索效果数据。

SELECT
  segments.date,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN 2020-08-01 AND 2020-08-31

在过滤时,请务必注意运算符是否区分大小写。

如需查看运算符的完整列表,请参阅语言语法

ORDER BY

ORDER BY 子句用于指定结果的返回顺序。这样一来,您就可以根据字段名称按升序或降序排列相关数据。每次排序都按 field_name 后跟 ASCDESC 的形式指定。如果未指定 ASCDESC,则默认顺序为 ASC。只有在 SELECT 子句中指定的字段才能在 ORDER BY 子句中使用。ORDER BY 子句在查询中是可选子句。

以下查询按点击次数从高到低顺序对返回的行进行排序:

SELECT
  segments.offer_id,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN 2020-08-01 AND 2020-08-31
ORDER BY metrics.clicks DESC

您可以使用英文逗号分隔列表在 ORDER BY 子句中指定多个字段。系统将按查询中指定的顺序进行排序。例如,在下面这个查询中,系统会按 offer_id 的升序对结果进行排序,接着按展示次数的降序对结果进行排序,最后按点击次数的降序对结果进行排序:

SELECT
  segments.offer_id,
  metrics.impressions,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN 2020-08-01 AND 2020-08-31
ORDER BY
  segments.offer_id,
  metrics.impressions DESC,
  metrics.clicks DESC

LIMIT

LIMIT 子句用于指定要返回的结果数量。 如果您只对摘要信息感兴趣,这个子句会非常有用。

例如,LIMIT 可用于限制以下查询的结果总数:

SELECT
  segments.program,
  segments.offer_id,
  metrics.impressions
FROM MerchantPerformanceView
WHERE segments.date BETWEEN 2020-08-01 AND 2020-08-31
ORDER BY metrics.impressions DESC
LIMIT 50