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,
  marketing_method,
  impressions,
  clicks
FROM product_performance_view
WHERE date BETWEEN '2023-08-01' AND '2023-08-31'

ОТ

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

ГДЕ

Use the WHERE clause to filter the data for your request. Предложение WHERE требуется для запросов производительности . Вы можете фильтровать по всем полям сегментов , а также по дополнительным полям показателей , если вы укажете их в предложении SELECT .

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

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

Вы можете фильтровать по нескольким условиям в одном запросе с помощью оператора AND . Используйте AND между полными условиями, например: WHERE marketing_method != "ADS" AND marketing_method != "ORGANIC" . Вы не можете использовать AND между значениями в одном условии, например: WHERE marketing_method != "ADS" AND "ORGANIC" .

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

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'

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

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

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

Укажите порядок по field_name , затем ASC или DESC . Вы можете упорядочить данные только по полям, указанным в предложении SELECT вашего запроса. ORDER BY по умолчанию имеет значение ASC , если вы не укажете.

Следующий запрос упорядочивает возвращаемые строки по количеству кликов, от большего к меньшему:

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

Вы можете указать несколько полей в предложении ORDER BY , используя список, разделенный запятыми.

Например, результаты следующего запроса сортируются в порядке возрастания по offer_id , затем в порядке убывания по количеству показов, затем в порядке убывания по количеству кликов:

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

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

SELECT offer_id, impressions
FROM product_performance_view
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'

You can define date strings with either single quotes ( ' ) or double quotes ( " ).

Родственник

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

WHERE date DURING LAST_30_DAYS

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