Merchant Center क्वेरी लैंग्वेज (MCQL), एसक्यूएल जैसी क्वेरी लैंग्वेज है. अपने प्रॉडक्ट और उस मार्केट की परफ़ॉर्मेंस का डेटा पाने के लिए, Merchant Reports API के साथ MCQL का इस्तेमाल किया जा सकता है.
व्याकरण
यहां रेगुलर एक्सप्रेशन नोटेशन में, 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]
, कैरेक्टर की रेंज दिखाता है.|
का मतलब "या" है.
केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होना
ज़्यादातर एमसीक्यूएल ऑपरेटर केस-सेंसिटिव होते हैं:
ऑपरेटर | केस सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) |
---|---|
= या != | केस संवेदी |
(NOT) IN | केस संवेदी |
(NOT) LIKE | केस संवेदी |
CONTAINS (...) | केस संवेदी |
REGEXP_MATCH | दोनों में से कोई एक |
क्लॉज़
यहां वे क्लॉज़ दिए गए हैं जिनके लिए एमसीक्यूएल की मदद से क्वेरी की जा सकती है:
चुनें
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
क्लॉज़ ज़रूरी है.
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
मार्केटिंग के तरीके के लिए, हर ऑफ़र पर मिले 100 से ज़्यादा क्लिक की संख्या दिखाता है:
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
के साथ काम नहीं करता. ऑपरेटर केस-सेंसिटिव होते हैं. ऑपरेटर की पूरी सूची के लिए, व्याकरण देखें.
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
फ़ील्ड का इस्तेमाल करें.
समय अवधियां
एमसीक्यूएल की मदद से, तारीख की कस्टम या रिलेटिव सीमा तय की जा सकती है. आपको सभी परफ़ॉर्मेंस क्वेरी के लिए date
रेंज तय करने के लिए, WHERE
क्लॉज़ का इस्तेमाल करना होगा.
कस्टम
आईएसओ 8601(YYYY-MM-DD) की तारीखों को इन फ़ॉर्मैट में डाला जा सकता है:
date BETWEEN '2021-01-01' AND '2021-01-31'
date >= '2021-01-01' AND date <= '2021-01-31'
तारीख की स्ट्रिंग को सिंगल कोट ('
) या डबल कोट ("
) में डाला जा सकता है.
संबंधी
BETWEEN
और AND
के बजाय DURING
का इस्तेमाल करके, LAST_30_DAYS
या THIS_MONTH
जैसी तारीख की सीमा तय की जा सकती है:
WHERE date DURING LAST_30_DAYS
तारीख की उपलब्ध रिलेटिव रेंज की पूरी सूची के लिए, व्याकरण देखें.