Merchant Center Query Language

Język zapytań Merchant Center (MCQL) to język zapytań podobny do SQL. Za pomocą MCQL i interfejsu Merchant Reports API możesz pobierać dane o skuteczności Twoich produktów i rynku, na którym się one znajdują.

Gramatyka

Oto referencje gramatyki MCQL (w notacji wyrażeń regularnych):

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

Możesz użyć tych symboli:

  • ?oznacza element opcjonalny.
  • * oznacza co najmniej 0, a + – co najmniej 1.
  • (xxxxxx) oznacza grupowanie.
  • [a-z0-9] oznacza zakresy znaków.
  • | oznacza „lub”.

Uwzględnianie wielkości liter

Większość operatorów MCQL rozróżnia wielkość liter:

Operatory Wielkość liter
= lub != Z uwzględnieniem wielkości liter
(NIE) W Z uwzględnieniem wielkości liter
(NIE) TAK Z uwzględnieniem wielkości liter
ZAWIERA (...) Z uwzględnieniem wielkości liter
REGEXP_MATCH Opcjonalnie oba

Klauzule

Oto klauzule, których możesz używać w zapytaniach MCQL:

WYBIERZ

Klauzula SELECT przyjmuje listę pól do pobrania, rozdzielonych przecinkami.

Możesz wybrać dowolne pole z widoku, którego używasz. Oto kilka przykładów pól, które możesz wybrać:

W jednym żądaniu możesz wysłać zapytanie dotyczące wielu typów pól. Oto przykład:

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

FROM

Klauzula FROM określa tabelę, z której mają być pobierane dane w żądaniu. W klauzuli FROM możesz podać tylko jedno pole. W przypadku wszystkich zapytań wymagana jest klauzula FROM.

WHERE

Aby filtrować dane w ramach żądania, użyj klauzuli WHERE. Klauzula WHERE jest wymagana w przypadku zapytań dotyczących skuteczności. Możesz filtrować według wszystkich pól segments oraz dodatkowych pól metrics, jeśli określisz je w klauzuli SELECT.

Oto przykład, w którym użyto parametru WHERE, aby zwrócić wyświetlenia tylko z określonego przedziału czasowego (sierpnia):

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

Za pomocą operatora AND możesz filtrować według wielu warunków w jednym zapytaniu. Używaj AND między pełnymi warunkami, np.: WHERE marketing_method != "ADS" AND marketing_method != "ORGANIC". Nie możesz używać znaku AND między wartościami w ramach jednego warunku, np. WHERE marketing_method != "ADS" AND "ORGANIC".

Oto przykład zapytania, które zwraca liczbę kliknięć na ofertę, gdzie w przypadku metody marketingowej ADS w sierpniu było ponad 100 kliknięć:

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'

Klauzula WHERE nie obsługuje OR. W przypadku operatorów rozróżniana jest wielkość liter. Pełną listę operatorów znajdziesz w sekcji gramatyka.

ORDER BY (opcjonalnie)

Klauzula ORDER BY umożliwia pobieranie wyników w określonej kolejności.

Określ kolejność: najpierw field_name, potem ASC lub DESC. Możesz sortować tylko według pól określonych w klauzuli SELECT w zapytaniu. Jeśli nie podasz wartości ORDER BY, zostanie użyta wartość domyślna ASC.

Zapytanie to sortuje zwrócone wiersze według liczby kliknięć od największej do najmniejszej:

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

W klauzuli ORDER BY możesz podać wiele pól, korzystając z listy rozdzielonej przecinkami.

Na przykład wyniki tego zapytania są sortowane w kolejności rosnącej według kolumny offer_id, a potem w kolejności malejącej według liczby wyświetleń, a następnie w kolejności malejącej według liczby kliknięć:

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

Klauzula LIMIT pozwala określić liczbę wyników do zwrócenia.

Oto przykład, który zwraca tylko 50 wyników, nawet jeśli dostępnych jest więcej wierszy.

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

Aby obsługiwać długie listy wyników, użyj pola pageSize.

Zakresy dat

MCQL umożliwia określenie niestandardowego lub względnego zakresu dat. Aby określić zakres date dla wszystkich zapytań dotyczących skuteczności, musisz użyć klauzuli WHERE.

Inne

Daty w formacie ISO 8601(RRRR-MM-DD) możesz podawać w tych formatach:

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

Ciągi znaków daty możesz definiować za pomocą cudzysłowów pojedynczych (') lub podwójnych (").

Krewny

Możesz określić względny zakres dat, np. LAST_30_DAYS lub THIS_MONTH, używając operatora DURING zamiast BETWEEN i AND:

WHERE date DURING LAST_30_DAYS

Pełną listę dostępnych zakresów dat względnych znajdziesz w sekcji gramatyka.