Merchant Center-Abfragesprache

Die Merchant Center Query Language (MCQL) ist eine Abfragesprache, die SQL ähnelt. Sie können MCQL mit der Merchant Reports API verwenden, um Leistungsdaten zu Ihren Produkten und dem Markt abzurufen, auf dem sie konkurrieren.

Grammatik

Hier ist die MCQL-Grammatikreferenz (in regulärer Ausdrucksnotation):

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

Sie können die folgenden Symbole verwenden:

  • ? gibt ein optionales Element an.
  • * bedeutet null oder mehr; + bedeutet eins oder mehr.
  • (xxxxxx) gibt eine Gruppierung an.
  • [a-z0-9] steht für Zeichenbereiche.
  • | steht für „oder“.

Groß-/Kleinschreibung

Bei den meisten MCQL-Operatoren wird zwischen Groß- und Kleinschreibung unterschieden:

Operatoren Berücksichtigung der Groß-/Kleinschreibung
= oder != Groß-/Kleinschreibung beachten
(NOT) IN Groß-/Kleinschreibung beachten
(NOT) LIKE Groß-/Kleinschreibung beachten
ENTHÄLT (...) Groß-/Kleinschreibung beachten
REGEXP_MATCH Optional beides

klauseln

Hier sind die Klauseln, die Sie mit der MCQL abfragen können:

AUSWÄHLEN

Die SELECT-Klausel verwendet eine durch Kommas getrennte Liste von Feldern, die abgerufen werden sollen.

Sie können ein beliebiges Feld aus der verwendeten Ansicht auswählen. Hier sind einige Beispiele für Felder, die Sie auswählen können:

Sie können mehrere Feldtypen in einer einzigen Anfrage abfragen. Beispiel:

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

VOM

In der FROM-Klausel wird die Tabelle angegeben, aus der Daten in der Anfrage abgerufen werden sollen. Sie können in der FROM-Klausel nur ein Feld angeben. Die FROM-Klausel ist für alle Abfragen erforderlich.

WHERE

Verwenden Sie die WHERE-Klausel, um die Daten für Ihre Anfrage zu filtern. Die WHERE-Klausel ist für Leistungsabfragen erforderlich. Sie können nach allen Segmentfeldern und nach zusätzlichen Messwertfeldern filtern, wenn Sie sie in der SELECT-Klausel angeben.

Hier ein Beispiel, in dem WHERE verwendet wird, um nur Impressionen aus einem bestimmten Zeitraum (August) zurückzugeben:

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

Mit dem Operator AND können Sie in einer einzelnen Abfrage nach mehreren Bedingungen filtern. Verwenden Sie AND zwischen vollständigen Bedingungen, z. B. WHERE marketing_method != "ADS" AND marketing_method != "ORGANIC". Sie können AND nicht zwischen Werten in einer einzelnen Bedingung verwenden, z. B. WHERE marketing_method != "ADS" AND "ORGANIC".

Hier ist ein Beispiel, das die Anzahl der Klicks pro Angebot für die Marketingmethode ADS im August zurückgibt, wenn mehr als 100 Klicks vorhanden sind:

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'

Die WHERE-Klausel unterstützt OR nicht. Bei Operatoren wird zwischen Groß- und Kleinschreibung unterschieden. Eine vollständige Liste der Operatoren finden Sie unter Grammatik.

ORDER BY (optional)

Mit der ORDER BY-Klausel können Sie Ergebnisse in einer bestimmten Reihenfolge abrufen.

Geben Sie die Reihenfolge mit field_name, dann ASC oder DESC an. Sie können nur nach Feldern sortieren, die in der SELECT-Klausel Ihrer Abfrage angegeben sind. ORDER BY ist standardmäßig auf ASC gesetzt, wenn Sie nichts angeben.

Mit der folgenden Abfrage werden die zurückgegebenen Zeilen nach der Anzahl der Klicks sortiert, vom höchsten zum niedrigsten Wert:

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

Sie können in der ORDER BY-Klausel mehrere Felder in einer durch Kommas getrennten Liste angeben.

Die Ergebnisse der folgenden Abfrage werden beispielsweise in aufsteigender Reihenfolge nach offer_id, dann in absteigender Reihenfolge nach der Anzahl der Impressionen und dann in absteigender Reihenfolge nach der Anzahl der Klicks sortiert:

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

Mit der LIMIT-Klausel können Sie die Anzahl der zurückzugebenden Ergebnisse angeben.

Hier ist ein Beispiel, bei dem nur 50 Ergebnisse zurückgegeben werden, auch wenn mehr Zeilen verfügbar sind.

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

Verwenden Sie das Feld pageSize, um lange Ergebnislisten zu verarbeiten.

Zeiträume

Mit der MCQL können Sie einen benutzerdefinierten oder relativen Zeitraum angeben. Sie müssen die WHERE-Klausel verwenden, um einen date-Bereich für alle Leistungsabfragen anzugeben.

Benutzerdefiniert

Sie können ISO 8601-Datumsangaben(JJJJ-MM-TT) in den folgenden Formaten angeben:

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

Sie können Datumsstrings entweder mit einfachen Anführungszeichen (') oder mit doppelten Anführungszeichen (") definieren.

Relativ

Sie können einen relativen Zeitraum wie LAST_30_DAYS oder THIS_MONTH angeben, indem Sie DURING anstelle von BETWEEN und AND verwenden:

WHERE date DURING LAST_30_DAYS

Eine vollständige Liste der verfügbaren relativen Zeiträume finden Sie unter Grammatik.