Merchant Center क्वेरी लैंग्वेज (MCQL), SQL की तरह ही एक क्वेरी लैंग्वेज है. Merchant Reports API के साथ MCQL का इस्तेमाल करके, अपने प्रॉडक्ट और उस बाज़ार की परफ़ॉर्मेंस का डेटा पाया जा सकता है जिसमें वे प्रतिस्पर्धा कर रहे हैं.
Grammar
यहां 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 ऑपरेटर केस-सेंसिटिव होते हैं:
ऑपरेटर | केस सेंसिटिविटी |
---|---|
= या != | केस सेंसिटिव |
भारत में (नहीं) | केस सेंसिटिव |
(नहीं) पसंद | केस सेंसिटिव |
इसमें (...) शामिल हैं | केस सेंसिटिव |
REGEXP_MATCH | वैकल्पिक रूप से दोनों |
उपनियम
MCQL के साथ क्वेरी की जा सकने वाली शर्तें यहां दी गई हैं:
SELECT
SELECT
क्लॉज़ में फ़ील्ड को फिर से पाने के लिए, कॉमा लगाकर अलग की गई फ़ील्ड की सूची होती है.
जिस व्यू का इस्तेमाल किया जा रहा है उससे कोई भी फ़ील्ड चुना जा सकता है. यहां उन फ़ील्ड के कुछ उदाहरण दिए गए हैं जिन्हें आप चुन सकते हैं:
एक ही अनुरोध में, कई तरह के फ़ील्ड के लिए क्वेरी की जा सकती है. यहां एक उदाहरण दिया गया है:
SELECT
date,
marketingMethod,
impressions,
clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
FROM
FROM
क्लॉज़ उस टेबल के बारे में बताता है जिससे अनुरोध से डेटा फ़ेच किया जा सकता है. FROM
क्लॉज़ में सिर्फ़ एक फ़ील्ड के बारे में बताया जा सकता है. सभी क्वेरी के लिए FROM
क्लॉज़ ज़रूरी है.
WHERE
अपने अनुरोध के डेटा को फ़िल्टर करने के लिए, WHERE
क्लॉज़ का इस्तेमाल करें. परफ़ॉर्मेंस से जुड़ी क्वेरी के लिए, WHERE
क्लॉज़ ज़रूरी है.
सभी सेगमेंट फ़ील्ड के हिसाब से फ़िल्टर किया जा सकता है. साथ ही, अगर SELECT
क्लॉज़ में डाइमेंशन की जानकारी दी जाती है, तो अतिरिक्त metrics फ़ील्ड के हिसाब से भी फ़िल्टर किया जा सकता है.
यहां एक उदाहरण दिया गया है, जिसमें सिर्फ़ किसी तय समयावधि (अगस्त महीने) के इंप्रेशन दिखाने के लिए, WHERE
का इस्तेमाल किया जाता है:
SELECT offerId, impressions
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
AND
ऑपरेटर की मदद से, किसी एक क्वेरी में कई शर्तों के हिसाब से फ़िल्टर किया जा सकता है.
पूरी शर्तों के बीच AND
का इस्तेमाल करें, जैसे कि: WHERE marketingMethod !=
"ADS" AND marketingMethod != "ORGANIC"
. किसी एक शर्त की वैल्यू के बीच AND
का इस्तेमाल नहीं किया जा सकता, जैसे कि: WHERE marketingMethod != "ADS" AND "ORGANIC"
.
यहां एक उदाहरण दिया गया है, जिससे हर ऑफ़र पर मिलने वाले क्लिक की संख्या दिखती है, जहां अगस्त महीने में ADS
मार्केटिंग तरीके के लिए 100 से ज़्यादा क्लिक होते हैं:
SELECT offerId, clicks
FROM ProductPerformanceView
WHERE clicks > 100
AND marketingMethod = 'ADS'
AND date BETWEEN '2020-08-01' AND '2020-08-31'
WHERE
क्लॉज़ को OR
के साथ इस्तेमाल नहीं किया जा सकता. ऑपरेटर केस-सेंसिटिव होते हैं. ऑपरेटर की पूरी सूची देखने के लिए, व्याकरण देखें.
इस हिसाब से ऑर्डर करें (ज़रूरी नहीं)
ORDER BY
क्लॉज़ की मदद से, तय क्रम में नतीजे पाए जा सकते हैं.
ऑर्डर को fieldName
के हिसाब से तय करें. इसके बाद, ASC
या DESC
का इस्तेमाल करें. सिर्फ़ अपनी क्वेरी के SELECT
क्लॉज़ में मौजूद फ़ील्ड के हिसाब से क्रम में लगाया जा सकता है. जानकारी न देने पर, ORDER BY
की डिफ़ॉल्ट वैल्यू
ASC
हो जाती है.
नीचे दी गई क्वेरी, नतीजों में दिखने वाली पंक्तियों को क्लिक की संख्या के हिसाब से क्रम में लगाती है.
SELECT offerId, clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY clicks DESC
ORDER BY
क्लॉज़ में एक से ज़्यादा फ़ील्ड के बारे में बताने के लिए, कॉमा लगाकर अलग की गई सूची का इस्तेमाल किया जा सकता है.
उदाहरण के लिए, नीचे दी गई क्वेरी के नतीजों को offerId
के हिसाब से बढ़ते क्रम में लगाया जाता है. इसके बाद, इंप्रेशन की संख्या के हिसाब से घटते क्रम में रखा जाता है. इसके बाद, क्लिक की संख्या के हिसाब से घटते क्रम में लगाया जाता है:
SELECT offerId, impressions, clicks
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY
offerId,
impressions DESC,
clicks DESC
सीमा
LIMIT
क्लॉज़ की मदद से, यह तय किया जा सकता है कि कितने नतीजे वापस मिलेंगे.
यहां एक उदाहरण दिया गया है, जिसमें ज़्यादा लाइनें होने पर भी सिर्फ़ 50 नतीजे मिलते हैं.
SELECT offerId, impressions
FROM ProductPerformanceView
WHERE date BETWEEN '2020-08-01' AND '2020-08-31'
ORDER BY impressions DESC
LIMIT 50
नतीजों की लंबी सूची मैनेज करने के लिए, pageSize
फ़ील्ड का इस्तेमाल करें.
तारीख की सीमाएं
MCQL की मदद से आप पसंद के मुताबिक या मिलती-जुलती तारीख की सीमा तय कर सकते हैं. आपको सभी परफ़ॉर्मेंस से जुड़ी क्वेरी के लिए date
रेंज तय करने के लिए, WHERE
क्लॉज़ का इस्तेमाल करना होगा.
पसंद के मुताबिक
ISO 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
उपलब्ध सापेक्ष तारीख सीमाओं की पूरी सूची के लिए व्याकरण देखें.