Merchant Center Query Language

Il linguaggio di query di Merchant Center (MCQL) è un linguaggio di query simile a SQL. Puoi utilizzare MCQL con l'API Merchant Reports per recuperare i dati sul rendimento dei tuoi prodotti e del mercato in cui sono in concorrenza in.

Grammatica

Di seguito è riportato il riferimento alla grammatica MCQL (in notazione di espressione regolare):

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

Puoi utilizzare i seguenti simboli:

  • ?indica un elemento facoltativo.
  • * significa zero o più; + significa uno o più.
  • (xxxxxx) indica un raggruppamento.
  • [a-z0-9] indica intervalli di caratteri.
  • | sta per "o".

Sensibilità alle maiuscole

La maggior parte degli operatori MCQL è sensibile alle maiuscole:

Operatori Sensibilità alle maiuscole
= o != Maiuscole/minuscole
(NOT) IN Maiuscole/minuscole
(NOT) LIKE Maiuscole/minuscole
CONTAINS (...) Maiuscole/minuscole
REGEXP_MATCH Facoltativamente entrambe

Clausole

Ecco le clausole che puoi interrogare con MCQL:

SELECT

La clausola SELECT accetta un elenco separato da virgole di campi da recuperare.

Puoi selezionare qualsiasi campo dalla visualizzazione che stai utilizzando. Ecco alcuni esempi di campi che puoi selezionare:

Puoi eseguire query su più tipi di campi in un'unica richiesta. Ecco un esempio:

SELECT
  date,
  marketing_method,
  impressions,
  clicks
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'

FROM

La clausola FROM specifica la tabella da cui recuperare i dati nella richiesta. Puoi specificare un solo campo nella clausola FROM. La clausola FROM è obbligatoria per tutte le query.

WHERE

Utilizza la clausola WHERE per filtrare i dati per la tua richiesta. La clausola WHERE è obbligatoria per le query sul rendimento. Puoi filtrare in base a tutti i campi dei segmenti, e ad altri campi delle metriche se li specifichi nella clausola SELECT.

Ecco un esempio che utilizza WHERE per restituire le impressioni solo da un periodo di tempo specificato (il mese di agosto):

SELECT offer_id, impressions
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'

Puoi filtrare in base a più condizioni in una singola query con l'operatore AND. Utilizza AND tra le condizioni complete, ad esempio: WHERE marketing_method != "ADS" AND marketing_method != "ORGANIC". Non puoi utilizzare AND tra i valori in una singola condizione, ad esempio: WHERE marketing_method != "ADS" AND "ORGANIC".

Ecco un esempio che restituisce il numero di clic per offerta, dove sono presenti più di 100 clic, per il metodo di marketing ADS, durante il mese di agosto:

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'

La clausola WHERE non supporta OR. Gli operatori sono sensibili alle maiuscole. Per un elenco completo degli operatori, consulta la grammatica.

ORDER BY (facoltativo)

La clausola ORDER BY consente di recuperare i risultati in un ordine specificato.

Specifica l'ordine in base a un field_name, quindi ASC o DESC. Puoi ordinare solo in base ai campi specificati nella clausola SELECT della query. ORDER BY utilizza ASC per impostazione predefinita se non lo specifichi.

La seguente query ordina le righe restituite in base al numero di clic, dal più alto al più basso:

SELECT offer_id, clicks
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'
ORDER BY clicks DESC

Puoi specificare più campi nella clausola ORDER BY utilizzando un elenco separato da virgole.

Ad esempio, i risultati della seguente query vengono ordinati in ordine crescente in base a offer_id, quindi in ordine decrescente in base al numero di impressioni e infine in ordine decrescente in base al numero di clic:

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

La clausola LIMIT consente di specificare il numero di risultati da restituire.

Ecco un esempio che restituisce solo 50 risultati, anche se sono disponibili altre righe.

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

Utilizza il campo pageSize per gestire elenchi lunghi di risultati.

Intervalli di date

MCQL consente di specificare un intervallo di date personalizzato o relativo. Devi utilizzare la WHERE clausola per specificare un date intervallo per tutte le query sul rendimento.

Personalizzato

Puoi specificare le date ISO 8601(AAAA-MM-GG) nei seguenti formati:

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

Puoi definire le stringhe di date con virgolette singole (') o doppie (").

Relativo

Puoi specificare un intervallo di date relativo, ad esempio LAST_30_DAYS o THIS_MONTH, utilizzando DURING anziché BETWEEN e AND:

WHERE date DURING LAST_30_DAYS

Per l'elenco completo degli intervalli di date relative disponibili, consulta la grammatica.