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] 代表字元範圍。
  • | 代表「or」。
,瞭解如何調查及移除這項存取權。

區分大小寫

大部分的 MCQL 運算子皆區分大小寫:

運算子 區分大小寫
= 或 != 區分大小寫
(非) 印第安納 區分大小寫
(非) 喜歡 區分大小寫
包含 (...) 區分大小寫
REGEXP_MATCH 可選擇兩者並用

子句

您可以使用 MCQL 查詢下列子句:

SELECT

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 子句 才能維持效能 查詢。 您可以使用下列所有條件進行篩選 區隔欄位、 以及其他條件 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 行銷方式的廣告累積超過 100 次點擊,在該月份的 8 月:

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

WHERE 子句不支援 OR。運算子須區分大小寫,換 如需完整的運算子清單,請參閱 grammar

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 子句中指定多個欄位,並以半形逗號分隔 請參考閱讀清單,進一步瞭解 如何選擇 Kubeflow Pipelines SDK 或 TFX

舉例來說,下列查詢的結果會以遞增順序排序, 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

如需可用相對日期範圍的完整清單,請參閱「grammar」一文。