Merchant Center Query Language

Le langage de requête Merchant Center (MCQL) est un langage de requête semblable à SQL. Vous pouvez utiliser MCQL avec l'API Merchant Reports pour récupérer des données sur les performances de vos produits et du marché sur lequel ils sont en concurrence.

Grammaire

Voici la documentation de référence sur la grammaire MCQL (dans la notation d'expression régulière) :

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

Vous pouvez utiliser les symboles suivants :

  • ?indique un élément facultatif.
  • * signifie zéro ou plusieurs ; + signifie un ou plusieurs.
  • (xxxxxx) indique un ensemble.
  • [a-z0-9] signifie des plages de caractères.
  • | signifie "ou".

Sensibilité à la casse

La plupart des opérateurs MCQL sont sensibles à la casse :

Opérateurs Sensibilité à la casse
= ou != Sensible à la casse
(NOT) IN Sensible à la casse
(NOT) LIKE Sensible à la casse
CONTAINS (...) Sensible à la casse
REGEXP_MATCH Sensible ou non à la casse, au choix

Clauses

Voici les clauses que vous pouvez interroger avec MCQL :

SELECT

La clause SELECT accepte une liste de champs à récupérer, séparés par une virgule.

Vous pouvez sélectionner n'importe quel champ dans la vue que vous utilisez. Voici quelques exemples de champs que vous pouvez sélectionner :

Vous pouvez interroger plusieurs types de champs dans une même requête. Exemple :

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

FROM

La clause FROM spécifie la table dont vous souhaitez extraire les données dans la requête. Vous ne pouvez spécifier qu'un seul champ dans la clause FROM. La clause FROM est obligatoire pour toutes les requêtes.

WHERE

Utilisez la clause WHERE pour filtrer les données de votre requête. La clause WHERE est obligatoire pour les requêtes sur les performances. Vous pouvez filtrer les données par tous les champs de segment, ainsi que par des champs de métrique supplémentaires si vous les spécifiez dans la SELECT clause.

Voici un exemple qui utilise WHERE pour n'afficher que les impressions d'une période spécifiée (le mois d'août) :

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

Vous pouvez filtrer les données selon plusieurs conditions dans une même requête à l'aide de l'opérateur AND. Utilisez AND entre des conditions complètes, par exemple : WHERE marketing_method != "ADS" AND marketing_method != "ORGANIC". Vous ne pouvez pas utiliser AND entre des valeurs dans une même condition, par exemple : WHERE marketing_method != "ADS" AND "ORGANIC".

Voici un exemple qui affiche le nombre de clics par offre, où le nombre de clics est supérieur à 100, pour la méthode marketing ADS, au cours du mois d'août :

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 clause WHERE n'est pas compatible avec OR. Les opérateurs sont sensibles à la casse. Pour obtenir la liste complète des opérateurs, consultez la grammaire.

ORDER BY (facultatif)

La clause ORDER BY vous permet de récupérer les résultats dans un ordre spécifié.

Spécifiez l'ordre par field_name, puis ASC ou DESC. Vous ne pouvez trier les données que par les champs spécifiés dans la clause SELECT de votre requête. ORDER BY est défini sur ASC par défaut si vous ne spécifiez rien.

La requête suivante trie les lignes affichées par nombre de clics, du plus élevé au plus faible :

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

Vous pouvez spécifier plusieurs champs dans la clause ORDER BY à l'aide d'une liste d'éléments séparés par une virgule.

Par exemple, les résultats de la requête suivante sont triés par ordre croissant d'offer_id, puis par nombre décroissant d'impressions, puis par nombre décroissant de clics :

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 clause LIMIT vous permet de spécifier le nombre de résultats à afficher.

Voici un exemple qui n'affiche que 50 résultats, même si d'autres lignes sont disponibles.

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

Utilisez le champ pageSize pour gérer de longues listes de résultats.

Périodes

MCQL vous permet de spécifier une période personnalisée ou relative. Vous devez utiliser la WHERE clause pour spécifier une date période pour toutes les requêtes sur les performances.

Personnalisé

Vous pouvez spécifier des dates au format ISO 8601(AAAA-MM-JJ) dans les formats suivants :

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

Vous pouvez définir des chaînes de date comportant des guillemets simples (') ou doubles (").

Relative

Vous pouvez spécifier une période relative, telle que LAST_30_DAYS ou THIS_MONTH, en utilisant DURING au lieu de BETWEEN et AND :

WHERE date DURING LAST_30_DAYS

Consultez la grammaire pour obtenir la liste complète des périodes relatives disponibles.