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 swoich produktów i rynku, na którym konkurują.

Gramatyka

Oto dokumentacja 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żywać tych symboli:

  • ? oznacza element opcjonalny.
  • * oznacza zero lub więcej, a + oznacza 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 uwzględnia wielkość liter:

Operatory Uwzględnianie wielkości liter
= lub != Z uwzględnieniem wielkości liter
(NOT) IN Z uwzględnieniem wielkości liter
(NOT) LIKE Z uwzględnieniem wielkości liter
CONTAINS (...) Z uwzględnieniem wielkości liter
REGEXP_MATCH Opcjonalnie obie

Klauzule

Oto klauzule, o które możesz wysyłać zapytania za pomocą MCQL:

WYBIERZ

Klauzula SELECT przyjmuje listę pól rozdzieloną przecinkami do pobrania.

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

W jednym żądaniu możesz wysyłać zapytania o pola różnych typów. 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 określić tylko 1 pole. Klauzula FROM jest wymagana we wszystkich zapytaniach.

WHERE

Za pomocą klauzuli WHERE możesz filtrować dane w żądaniu. Klauzula WHERE jest wymagana w zapytaniach o skuteczność. Możesz filtrować według wszystkich segmentów pól, oraz dodatkowych danych pól, jeśli określisz je w klauzuli SELECT.

Oto przykład użycia klauzuli WHERE do zwracania wyświetleń tylko z określonego okresu (sierpnia):

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

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

Oto przykład, który zwraca liczbę kliknięć na ofertę, w przypadku której w sierpniu w metodzie marketingowej ADS było więcej niż 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 operatora OR. Operatory uwzględniają 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ść według field_name, a następnie ASC lub DESC. Możesz sortować tylko według pól określonych w klauzuli SELECT w zapytaniu. ORDER BY domyślnie używa ASC, jeśli nie określisz.

To zapytanie 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 określić wiele pól, używając listy rozdzielonej przecinkami.

Na przykład wyniki tego zapytania są sortowane rosnąco według offer_id, a następnie malejąco według liczby wyświetleń i 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 umożliwia określenie liczby 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ń o skuteczność , musisz użyć klauzuli WHERE.

Niestandardowy

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

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

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

Względny

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

WHERE date DURING LAST_30_DAYS

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