Merchant Center Query Language

Merchant Center 查询语言 (MCQL) 是一种查询语言,类似于 SQL。您 可以将 MCQL 与 Merchant Reports API 结合使用, 检索有关您的产品及其所竞争市场的效果数据。

语法

以下是 MCQL 语法参考(采用正则表达式表示法):

Query            -> SelectClause FromClause? WhereClause? OrderByClause? LimitClause?
SelectClause     -> SELECT FieldName (, FieldName)*
FromClause       -> FROM TableName
WhereClause      -> WHERE Condition (AND Condition)*
OrderByClause    -> ORDER BY Ordering (, Ordering)*
LimitClause      -> LIMIT PositiveInteger

Condition        -> FieldName Operator Value | FieldName BETWEEN Value AND Value
Operator         -> = | != | > | >= | < | <= | <> | IN | NOT IN |
                    CONTAINS ANY | CONTAINS ALL | CONTAINS NONE | DURING |
                    LIKE | NOT LIKE | REGEXP_MATCH | NOT REGEXP_MATCH
Value            -> Number | NumberList | String | StringList | Function
Ordering         -> FieldName (ASC | DESC)?

FieldName        -> [a-z] ([a-zA-Z0-9._])*
TableName        -> [A-Z] ([a-zA-Z_])*

StringList       -> ( String (, String)* )
NumberList       -> ( Number (, Number)* )

PositiveInteger  -> [1-9] ([0-9])*
Number           -> -? [0-9]+ (. [0-9] [0-9]*)?
String           -> (' Char* ') | (" Char* ")
Function         -> LAST_14_DAYS | LAST_30_DAYS | LAST_7_DAYS |
                    LAST_BUSINESS_WEEK | LAST_MONTH | LAST_WEEK_MON_SUN |
                    LAST_WEEK_SUN_SAT | THIS_MONTH | THIS_WEEK_MON_TODAY |
                    THIS_WEEK_SUN_TODAY | TODAY | YESTERDAY

您可以使用以下符号:

  • ? 表示可选元素。
  • * 表示零个或更多个;+ 表示一个或多个。
  • (xxxxxx) 表示分组。
  • [a-z0-9] 表示字符范围。
  • | 代表“或”。

大小写区分

大多数 MCQL 运算符都区分大小写:

运算符 区分大小写
= 或 != 区分大小写
(非)IN 区分大小写
(非)赞 区分大小写
包含 (...) 区分大小写
REGEXP_MATCH (可选)

条款

以下是您可以使用 MCQL 查询的子句:

选择

SELECT 子句接受要检索的字段的英文逗号分隔列表。

您可以从正在使用的视图中选择任何字段。这里给出了一些示例 字段:

您可以在单个请求中查询多个字段类型。示例如下:

SELECT
  date,
  marketingMethod,
  impressions,
  clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'

FROM

FROM 子句在请求中指定要从中提取数据的表。您可以 在 FROM 子句中只能指定一个字段。对于以下查询,必须使用 FROM 子句: 所有查询。

WHERE

使用 WHERE 子句过滤请求的数据。WHERE 子句 是实现性能的必要条件 查询。 您可以按全部 segments 字段不同, 其他 metrics字段 并在 SELECT 子句中指定它们。

下例使用 WHERE 仅从指定的 时间段(8 月):

SELECT offerId, impressions
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'

您可以使用 AND 运算符在单个查询中按多个条件进行过滤。 在完整条件之间使用 AND,例如:WHERE marketingMethod != "ADS" AND marketingMethod != "ORGANIC"。您不能在两个值之间使用 AND, 单个条件,例如 WHERE marketingMethod != "ADS" AND "ORGANIC"

下面这个示例返回了每项商品的点击次数,其中 对于“ADS”营销方式,在本月 8 月:

SELECT offerId, clicks
FROM ProductPerformanceView
WHERE clicks > 100
  AND marketingMethod = 'ADS'
  AND date BETWEEN '2020-08-01' AND '2020-08-31'

WHERE 子句不支持 OR。运算符区分大小写。对于 运算符的完整列表,请参阅语法

ORDER BY(可选)

ORDER BY 子句可让您按指定顺序检索结果。

请先按 fieldName 指定顺序,然后按 ASCDESC 指定。您只能按以下方式订购: 查询 SELECT 子句中指定的字段。ORDER BY 默认为 ASC(如果未指定)。

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

SELECT offerId, clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY clicks DESC

您可以使用英文逗号分隔的 ORDER BY 子句中指定多个字段 列表。

例如,以下查询的结果按 offerId,然后按展示次数降序排列,最后按降序 按点击次数排序:

SELECT offerId, impressions, clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY
  offerId,
  impressions DESC,
  clicks DESC

LIMIT

LIMIT 子句用于指定要返回的结果数。

下面是一个仅返回 50 个结果的示例,即使还有更多行可用也是如此。

SELECT offerId, impressions
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY impressions DESC
LIMIT 50

使用 pageSize 字段处理较长的结果列表。

日期范围

通过 MCQL,您可以指定自定义或相对日期范围。您必须使用 WHERE 子句,用于指定所有性能的 date 范围 查询

自定义

您可以采用以下格式指定 ISO 8601(YYYY-MM-DD) 日期:

  • date BETWEEN '2021-01-01' AND '2021-01-31'
  • date >= '2021-01-01' AND date <= '2021-01-31'

您可以使用单引号 (') 或双引号定义日期字符串 (")。

相对

您可以指定相对日期范围,例如 LAST_30_DAYSTHIS_MONTH。 使用 DURING(而非 BETWEENAND):

WHERE date DURING LAST_30_DAYS

有关可用相对日期范围的完整列表,请参阅语法