Język zapytań Merchant Center

Merchant Center Query Language (MCQL) to język zapytań podobny do SQL. Możesz używać MCQL z interfejsem Merchant Reports API, aby 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 + – co najmniej 1.
  • (xxxxxx) oznacza grupowanie.
  • [a-z0-9] oznacza zakresy znaków.
  • | oznacza „lub”.

Uwzględnianie wielkości liter

W przypadku większości operatorów MCQL wielkość liter ma znaczenie:

Operatory Rozróżnianie 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 opcje

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 używanego widoku. Oto kilka przykładów pól, które możesz wybrać:

W jednym żądaniu możesz wysłać zapytanie o wiele 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ą zostać pobrane dane w żądaniu. W klauzuli FROM możesz określić tylko jedno pole. Klauzula FROM jest wymagana we wszystkich zapytaniach.

WHERE

Użyj klauzuli WHERE, aby filtrować dane w żądaniu. Klauzula WHERE jest wymagana w przypadku zapytań dotyczących skuteczności. Możesz filtrować według wszystkich pól segmentów i dodatkowych pól wskaźników, jeśli określisz je w klauzuli SELECT.

Oto przykład użycia właściwości 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'

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

Oto przykład, który zwraca liczbę kliknięć na ofertę, gdy jest ich więcej niż 100, dla metody marketingowej ADS w sierpniu:

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. W operatorach wielkość liter ma znaczenie. Pełną listę operatorów znajdziesz w gramatyce.

ORDER BY (opcjonalnie)

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

Określ kolejność, używając właściwości field_name, a następnie ASC lub DESC. Możesz sortować tylko według pól określonych w klauzuli SELECT zapytania. Jeśli nie określisz wartości ORDER BY, domyślnie zostanie użyta wartość ASC.

To zapytanie porządkuje 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 w kolejności rosnącej według kolumny offer_id, a następnie w kolejności malejącej 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ń dotyczących skuteczności, musisz użyć klauzuli WHERE.

Niestandardowa

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 dat można definiować za pomocą pojedynczych (') lub podwójnych cudzysłowów (").

Względny

Możesz określić względny zakres dat, np. LAST_30_DAYS lub THIS_MONTH, używając 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.