Merchant Center Query Language

שפת השאילתות של Merchant Center‏ (MCQL) היא שפת שאילתות, בדומה ל-SQL. אפשר להשתמש ב-MCQL עם Merchant Reports API כדי לאחזר נתוני ביצועים של המוצרים שלכם ושל השוק שבו הם מתחרים.

דקדוק

לפניכם הפניה למורפולוגיה של MCQL (בסימן של ביטוי רגולרי):

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

אפשר להשתמש בסמלים הבאים:

  • ? מציין רכיב אופציונלי.
  • * מציין אפס או יותר, ו-+ מציין אחד או יותר.
  • (xxxxxx) מציין קיבוץ.
  • [a-z0-9] מציין טווחי תווים.
  • | מייצג את המילה 'או'.

החשיבות של אותיות רישיות

רוב האופרטורים של MCQL הם תלוי-אותיות רישיות:

אופרטורים תלות באותיות רישיות
‎= או !=‎ תלוי רישיות
(NOT) IN תלוי רישיות
(NOT) LIKE תלוי רישיות
CONTAINS (...) תלוי רישיות
REGEXP_MATCH אפשר גם את שניהם

משפטי משנה

אלה התנאים שאפשר להשתמש בהם בשאילתות באמצעות MCQL:

‪SELECT

התנאי SELECT מקבל רשימה של שדות לאחזור, המופרדים בפסיקים.

אפשר לבחור כל שדה מהתצוגה שבה אתם משתמשים. ריכזנו כאן כמה דוגמאות לשדות שאפשר לבחור:

אפשר לשלוח שאילתות לגבי כמה סוגי שדות בבקשה אחת. לדוגמה:

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

FROM

התנאי FROM מציין את הטבלה שממנה צריך לאחזר נתונים בבקשה. אפשר לציין רק שדה אחד בפסקה FROM. התנאי FROM נדרש בכל השאילתות.

WHERE

משתמשים בפסקה WHERE כדי לסנן את הנתונים של הבקשה. התנאי WHERE נדרש לשאילתות ביצועים. אפשר לסנן לפי כל השדות של segments, וגם לפי שדות נוספים של metrics אם מציינים אותם בפסקה SELECT.

דוגמה לשימוש ב-WHERE כדי להציג חשיפות רק מהתקופה שצוינה (חודש אוגוסט):

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

אפשר לסנן לפי כמה תנאים בשאילתה אחת באמצעות האופרטור AND. משתמשים ב-AND בין תנאים מלאים, לדוגמה: WHERE marketing_method != "ADS" AND marketing_method != "ORGANIC". אי אפשר להשתמש ב-AND בין ערכים בתנאי יחיד, לדוגמה: WHERE marketing_method != "ADS" AND "ORGANIC".

דוגמה למחרוזת שמציגה את מספר הקליקים לכל מבצע, כאשר יש יותר מ-100 קליקים, בשיטת השיווק ADS במהלך חודש אוגוסט:

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'

אין תמיכה ב-OR בפסקה WHERE. המערכת מבחינה בין אותיות רישיות לאותיות רגילות באופרטורים. רשימה מלאה של האופרטורים מופיעה בקטע תחביר.

ORDER BY (אופציונלי)

התנאי ORDER BY מאפשר לאחזר תוצאות בסדר מסוים.

מציינים את הסדר באמצעות field_name ואז ASC או DESC. אפשר למיין רק לפי שדות שצוינו בפסקה SELECT של השאילתה. אם לא מציינים ערך, ORDER BY מקבל את הערך ASC כברירת מחדל.

השאילתה הבאה ממיינת את השורות שהוחזרו לפי מספר הקליקים, מהגבוה לנמוך:

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

אפשר לציין כמה שדות בפסקה ORDER BY באמצעות רשימה מופרדת בפסיקים.

לדוגמה, התוצאות של השאילתה הבאה ממוינות לפי סדר עולה לפי offer_id, ואז לפי סדר יורד לפי מספר החשיפות, ואז לפי סדר יורד לפי מספר הקליקים:

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

התנאי LIMIT מאפשר לציין את מספר התוצאות שיש להחזיר.

הנה דוגמה שמחזירה רק 50 תוצאות, גם אם יש שורות נוספות.

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

משתמשים בשדה pageSize כדי לטפל ברשימות ארוכות של תוצאות.

טווחי תאריכים

ב-MCQL אפשר לציין טווח תאריכים מותאם אישית או יחסי. צריך להשתמש בפסקה WHERE כדי לציין טווח date לכל שאילתות הביצועים.

בהתאמה אישית

אפשר לציין תאריכים לפי תקן ISO 8601‏(YYYY-MM-DD) בפורמטים הבאים:

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

אפשר להגדיר מחרוזות תאריכים באמצעות מירכאות בודדות (') או מירכאות כפולות (").

קרוב-משפחה

אפשר לציין טווח תאריכים יחסי, כמו LAST_30_DAYS או THIS_MONTH, באמצעות DURING במקום BETWEEN ו-AND:

WHERE date DURING LAST_30_DAYS

בדקדוק מפורטת הרשימה המלאה של טווחי התאריכים היחסיים הזמינים.