Merchant Center Query Language

El lenguaje de consultas de Merchant Center (MCQL) es un lenguaje de consultas similar a SQL. Puedes usar MCQL con la API de informes de Merchant para recuperar datos de rendimiento de tus productos y del mercado en el que compiten en.

Gramática

Esta es la referencia de la gramática de MCQL (en notación de expresiones regulares):

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

Puedes usar los siguientes símbolos:

  • ?indica un elemento opcional.
  • * significa cero o más, y + significa uno o más.
  • (xxxxxx) indica una agrupación.
  • [a-z0-9] indica rangos de caracteres.
  • | significa "o".

Cómo distinguir mayúsculas de minúsculas

La mayoría de los operadores de MCQL distinguen entre mayúsculas y minúsculas:

Operadores Distinción de mayúsculas
= o != Distinción entre mayúsculas y minúsculas
(NOT) IN Distinción entre mayúsculas y minúsculas
(NOT) LIKE Distinción entre mayúsculas y minúsculas
CONTAINS (...) Distinción entre mayúsculas y minúsculas
REGEXP_MATCH Opcionalmente, ambas

modelo de la UE

Estas son las cláusulas que puedes consultar con MCQL:

SELECT

La cláusula SELECT toma una lista de campos separados por comas para recuperar.

Puedes seleccionar cualquier campo de la vista que estés usando. Estos son algunos ejemplos de campos que puedes seleccionar:

Puedes consultar varios tipos de campos en una sola solicitud. Por ejemplo:

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

FROM

La cláusula FROM especifica la tabla de la que se recuperarán los datos en la solicitud. Solo puedes especificar un campo en la cláusula FROM. La cláusula FROM es obligatoria para todas las consultas.

WHERE

Usa la cláusula WHERE para filtrar los datos de tu solicitud. La cláusula WHERE es obligatoria para las consultas de rendimiento. Puedes filtrar por todos los campos de segmentos, y por campos de métricas adicionales si los especificas en la SELECT cláusula.

Este es un ejemplo que usa WHERE para mostrar las impresiones solo de un período especificado (el mes de agosto):

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

Puedes filtrar por varias condiciones en una sola consulta con el operador AND. Usa AND entre condiciones completas, por ejemplo: WHERE marketing_method != "ADS" AND marketing_method != "ORGANIC". No puedes usar AND entre valores en una sola condición, por ejemplo: WHERE marketing_method != "ADS" AND "ORGANIC".

Este es un ejemplo que muestra la cantidad de clics por oferta, donde hay más de 100 clics, para el método de marketing ADS, durante el mes de 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 cláusula WHERE no admite OR. Los operadores distinguen entre mayúsculas y minúsculas. Para obtener una lista completa de los operadores, consulta la gramática.

ORDER BY (opcional)

La cláusula ORDER BY te permite recuperar resultados en un orden especificado.

Especifica el orden por un field_name y, luego, ASC o DESC. Solo puedes ordenar por los campos especificados en la cláusula SELECT de tu consulta. ORDER BY usa ASC de forma predeterminada si no lo especificas.

La siguiente consulta ordena las filas que se muestran por cantidad de clics, de mayor a menor:

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

Puedes especificar varios campos en la cláusula ORDER BY con una lista separada por comas.

Por ejemplo, los resultados de la siguiente consulta se ordenan de forma ascendente por offer_id, luego de forma descendente por cantidad de impresiones y, luego, de forma descendente por cantidad 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 cláusula LIMIT te permite especificar la cantidad de resultados que se mostrarán.

Este es un ejemplo que muestra solo 50 resultados, incluso si hay más filas 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

Usa el campo pageSize para administrar listas largas de resultados.

Intervalos de fechas

MCQL te permite especificar un intervalo de fechas personalizado o relativo. Debes usar la WHERE cláusula para especificar un date intervalo para todas las consultas de rendimiento.

Personalizado

Puedes especificar fechas ISO 8601(AAAA-MM-DD) en los siguientes formatos:

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

Puedes definir cadenas de fecha con comillas simples (') o comillas dobles (").

Relativo

Puedes especificar un intervalo de fechas relativo, como LAST_30_DAYS o THIS_MONTH, usando DURING en lugar de BETWEEN y AND:

WHERE date DURING LAST_30_DAYS

Consulta la gramática para obtener la lista completa de los intervalos de fechas relativos disponibles.