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 运算符都区分大小写:
| 运算符 | 区分大小写 |
|---|---|
| = 或 != | 区分大小写 |
| (NOT) IN | 区分大小写 |
| (NOT) LIKE | 区分大小写 |
| CONTAINS (...) | 区分大小写 |
| REGEXP_MATCH | 可选(两者均可) |
条款
以下是您可以使用 MCQL 查询的子句:
选择
SELECT 子句接受以英文逗号分隔的要检索的字段列表。
您可以从所用视图中选择任何字段。以下是一些您可以选择的字段示例:
您可以在单个请求中查询多种字段类型。示例如下:
SELECT
date,
marketing_method,
impressions,
clicks
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'
FROM
FROM 子句用于指定请求中要从中提取数据的表。您只能在 FROM 子句中指定一个字段。所有查询都必须包含 FROM 子句。
WHERE
使用 WHERE 子句过滤请求中的数据。性能查询需要 WHERE 子句。
您可以按所有细分字段进行过滤,如果您在 SELECT 子句中指定了其他指标字段,也可以按这些字段进行过滤。
以下示例使用 WHERE 仅返回指定时间段(8 月)的展示次数:
SELECT offer_id, impressions
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'
您可以使用 AND 运算符在单个查询中按多个条件进行过滤。在完整条件之间使用 AND,例如:WHERE marketing_method !=
"ADS" AND marketing_method != "ORGANIC"。您不能在单个条件中的值之间使用 AND,例如:WHERE marketing_method != "ADS" AND
"ORGANIC"。
以下示例返回了 8 月份采用 ADS 营销方法且点击次数超过 100 次的每个优惠的点击次数:
SELECT offer_id, clicks
FROM product_performance_view
WHERE clicks > 100
AND marketing_method = 'ADS'
AND date BETWEEN '2023-08-01' AND '2023-08-31'
WHERE 子句不支持 OR。运算符区分大小写。如需查看运算符的完整列表,请参阅语法。
ORDER BY(可选)
借助 ORDER BY 子句,您可以按指定顺序检索结果。
指定按 field_name 排序,然后按 ASC 或 DESC 排序。您只能按查询的 SELECT 子句中指定的字段进行排序。如果您未指定,ORDER BY 默认值为 ASC。
以下查询按点击次数从高到低顺序对返回的行进行排序:
SELECT offer_id, clicks
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'
ORDER BY clicks DESC
您可以使用英文逗号分隔列表在 ORDER BY 子句中指定多个字段。
例如,以下查询的结果会按 offer_id 的升序进行排序,然后按展示次数的降序进行排序,最后按点击次数的降序进行排序:
SELECT offer_id, impressions, clicks
FROM product_performance_view
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY
offer_id,
impressions DESC,
clicks DESC
LIMIT
LIMIT 子句用于指定要返回的结果数量。
以下示例仅返回 50 个结果,即使有更多行可用也是如此。
SELECT offer_id, impressions
FROM product_performance_view
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'
您可以使用英文单引号 (') 或英文双引号 (") 定义日期字符串。
相对
您可以使用 DURING(而非 BETWEEN 和 AND)指定相对日期范围,例如 LAST_30_DAYS 或 THIS_MONTH:
WHERE date DURING LAST_30_DAYS
如需查看可用相对日期范围的完整列表,请参阅语法。