Merchant Center Query Language

Język zapytań Merchant Center (MCQL) to język zapytań podobny do języka SQL. Możesz użyć MCQL w interfejsie Merchant Reports API, aby pobierać dane o skuteczności Twoich produktów i rynku, na którym konkurują.

Gramatyka

Oto informacje o gramatyce MCQL (w zapisie z wyrażeniami regularnymi):

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 0 lub więcej; + oznacza 1 lub więcej.
  • (xxxxxx) oznacza grupę.
  • [a-z0-9] oznacza zakresy znaków.
  • | oznacza „lub”.

Uwzględnianie wielkości liter

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

Operatory Czułość wielkości liter
= lub != Z uwzględnieniem wielkości liter
(NIE) IN Z uwzględnieniem wielkości liter
(NIE) LUBIĘ Z uwzględnieniem wielkości liter
ZAWIERA (...) Z uwzględnieniem wielkości liter
REGEXP_MATCH Opcjonalnie oba

Klauzule

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

SELECT

Klauzula SELECTwymaga pobrania listy pól oddzielonych przecinkami.

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

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

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

FROM

Klauzula FROM określa tabelę, z której w żądaniu mają zostać pobrane dane. W klauzuli FROM możesz określić tylko jedno pole. Klauzula FROM jest wymagana we wszystkich zapytaniach.

WHERE

Do filtrowania danych na potrzeby żądania używaj klauzuli WHERE. Klauzula WHERE jest wymagana w przypadku zapytań dotyczących wydajności. Możesz filtrować według wszystkich pól segmentów lub według dodatkowych pól metrics, jeśli określisz je w klauzuli SELECT.

Oto przykład, w którym funkcja WHERE zwraca wyświetlenia tylko z wybranego okresu (sierpnia):

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

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

Oto przykład, który zwraca liczbę kliknięć na ofertę, gdy w przypadku metody marketingowej ADS odnotowano ponad 100 kliknięć w sierpniu:

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

Klauzula WHERE nie obsługuje parametru OR. W operatorach wielkość liter ma znaczenie. Pełną listę operatorów znajdziesz w sekcji grammar.

ORDER BY (opcjonalnie)

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

Określ kolejność za pomocą pola fieldName, a następnie ASC lub DESC. Możesz sortować produkty tylko według pól określonych w klauzuli SELECT zapytania. Jeśli nie określisz wartości, ORDER BY przyjmuje domyślnie wartość ASC.

To zapytanie porządkuje zwracane wiersze według liczby kliknięć, od największej do najmniejszej:

SELECT offerId, clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY clicks DESC

W klauzuli ORDER BY możesz określić wiele pól za pomocą listy rozdzielanej przecinkami.

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

SELECT offerId, impressions, clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY
  offerId,
  impressions DESC,
  clicks DESC

LIMIT

Klauzula LIMIT umożliwia określenie liczby wyników do zwrócenia.

W tym przykładzie zwracamy tylko 50 wyników, nawet jeśli dostępnych jest więcej wierszy.

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

Do obsługi długich list wyników używaj pola pageSize.

Zakresy dat

MCQL pozwala określić niestandardowy lub względny zakres dat. Aby określić zakres date dla wszystkich zapytań dotyczących wydajności, musisz używać klauzuli WHERE.

Inne

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

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

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

Krewny

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