Merchant Center Query Language

Язык запросов Merchant Center (MCQL) – это язык запросов, аналогичный SQL. Вы можете использовать MCQL с API 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] означает диапазоны символов.
  • | означает «или».

Чувствительность к регистру

Большинство операторов MCQL чувствительны к регистру:

Операторы Чувствительность к регистру
= или != С учетом регистра
(НЕ)В С учетом регистра
(НЕ) НРАВИТСЯ С учетом регистра
СОДЕРЖИТ (...) С учетом регистра
РЕГЭКСП_МАТЧ Опционально оба

Положения

Вот предложения, которые вы можете запросить с помощью MCQL:

ВЫБИРАТЬ

Предложение SELECT принимает для извлечения список полей, разделенных запятыми.

Вы можете выбрать любое поле в используемом представлении. Вот несколько примеров полей, которые вы можете выбрать:

Вы можете запросить несколько типов полей в одном запросе. Вот пример:

SELECT
  date,
  marketingMethod,
  impressions,
  clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'

ОТ

Предложение FROM указывает таблицу, из которой будут извлекаться данные в запросе. В предложении FROM можно указать только одно поле. Предложение FROM необходимо для всех запросов.

ГДЕ

Используйте предложение WHERE для фильтрации данных для вашего запроса. Предложение WHERE требуется для запросов производительности . Вы можете фильтровать по всем полям сегментов , а также по дополнительным полям показателей , если вы укажете их в предложении SELECT .

Вот пример, в котором WHERE используется для возврата показов только за определенный период времени (август):

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" .

Вот пример, который возвращает количество кликов на одно предложение (более 100 кликов) для метода маркетинга ADS в течение августа:

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

Предложение WHERE не поддерживает OR . Операторы чувствительны к регистру. Полный список операторов см. в грамматике .

ЗАКАЗАТЬ ПО (необязательно)

Предложение ORDER BY позволяет получать результаты в указанном порядке.

Укажите порядок по fieldName , затем ASC или DESC . Вы можете упорядочить данные только по полям, указанным в предложении 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 , используя список, разделенный запятыми.

Например, результаты следующего запроса сортируются в порядке возрастания по 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 позволяет указать количество возвращаемых результатов.

Вот пример, который возвращает только 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(ГГГГ-ММ-ДД) в следующих форматах:

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

Вы можете определить строки даты либо с одинарными кавычками ( ' ), либо с двойными кавычками ( " ).

Родственник

Вы можете указать относительный диапазон дат, например LAST_30_DAYS или THIS_MONTH , используя DURING вместо BETWEEN и AND :

WHERE date DURING LAST_30_DAYS

Полный список доступных относительных диапазонов дат см. в грамматике .