Merchant Center 查詢語言 (MCQL) 是一種查詢語言,類似於 SQL。你可以搭配 Merchant Reports API 使用 MCQL,擷取產品的成效資料,以及產品所屬市場的競爭情況。
文法
以下是 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 子句會擷取以半形逗號分隔的欄位清單。
您可以從使用的檢視畫面中選取任何欄位。以下列舉幾個可選取的欄位:
您可以在單一要求中查詢多個欄位類型。範例如下:
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
如需可用相對日期範圍的完整清單,請參閱文法。