Merchant Center Query Language

زبان پرس‌وجوی مرکز فروشندگان (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 به حروف بزرگ و کوچک حساس هستند:

اپراتورها حساسیت به حروف بزرگ و کوچک
= یا != حساس به حروف بزرگ و کوچک
(نه) در حساس به حروف بزرگ و کوچک
(نه) دوست دارم حساس به حروف بزرگ و کوچک
شامل (...) حساس به حروف بزرگ و کوچک
تطبیق_ثبت اختیاری هر دو

بندها

در اینجا بندهایی وجود دارد که می‌توانید با MCQL پرس‌وجو کنید:

انتخاب

دستور SELECT لیستی از فیلدها را که با کاما از هم جدا شده‌اند، برای بازیابی دریافت می‌کند.

شما می‌توانید هر فیلدی را از نمایی که استفاده می‌کنید انتخاب کنید. در اینجا چند نمونه از فیلدهایی که می‌توانید انتخاب کنید، آورده شده است:

شما می‌توانید چندین نوع فیلد را در یک درخواست واحد جستجو کنید. در اینجا مثالی آورده شده است:

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

از

عبارت FROM جدولی را که قرار است داده‌ها از آن در درخواست دریافت شوند، مشخص می‌کند. شما فقط می‌توانید یک فیلد را در عبارت FROM مشخص کنید. عبارت FROM برای همه پرس‌وجوها الزامی است.

کجا

از دستور WHERE برای فیلتر کردن داده‌های درخواست خود استفاده کنید. دستور WHERE برای کوئری‌های مربوط به عملکرد ضروری است. می‌توانید بر اساس تمام فیلدهای سگمنت و فیلدهای معیارهای اضافی، در صورت مشخص کردن آنها در دستور 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" .

در اینجا مثالی آورده شده است که تعداد کلیک‌ها به ازای هر پیشنهاد، که در آن بیش از ۱۰۰ کلیک وجود دارد، را برای روش بازاریابی 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'

عبارت WHERE OR پشتیبانی نمی‌کند. عملگرها به حروف کوچک و بزرگ حساس هستند. برای مشاهده لیست کامل عملگرها، به grammar مراجعه کنید.

سفارش بر اساس (اختیاری)

دستور 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 به شما امکان می‌دهد تعداد نتایجی را که باید برگردانده شوند، مشخص کنید.

در اینجا مثالی آورده شده است که فقط ۵۰ نتیجه را برمی‌گرداند، حتی اگر ردیف‌های بیشتری موجود باشد.

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'

شما می‌توانید رشته‌های تاریخ را با علامت نقل قول تکی ( ' ) یا علامت نقل قول دوتایی ( " ) تعریف کنید.

نسبی

شما می‌توانید با استفاده از DURING به جای BETWEEN و AND ، یک محدوده تاریخ نسبی، مانند LAST_30_DAYS یا THIS_MONTH ، مشخص کنید:

WHERE date DURING LAST_30_DAYS

برای فهرست کامل محدوده‌های تاریخ نسبی موجود، به گرامر مراجعه کنید.