क्वेरी लैंग्वेज रेफ़रंस (वर्शन 0.7)

Google विज़ुअलाइज़ेशन API क्वेरी लैंग्वेज की मदद से आप डेटा सोर्स में क्वेरी से जुड़े कई तरह के डेटा में बदलाव कर सकते हैं.

विषय सूची

शुरुआती जानकारी

आम तौर पर, विज़ुअलाइज़ेशन में डेटा किसी खास फ़ॉर्मैट में होता है. उदाहरण के लिए, पाई चार्ट में डेटा को दो कॉलम के तौर पर दिखाया जा सकता है: टेक्स्ट लेबल और न्यूमेरिक वैल्यू. ऐसा हो सकता है कि डेटा सोर्स में मौजूद डेटा, इस स्ट्रक्चर से पूरी तरह मैच न करे. उदाहरण के लिए, डेटा सोर्स में दो से ज़्यादा कॉलम हो सकते हैं या हो सकता है कि कॉलम का क्रम, पाई चार्ट में अनुमानित क्रम से मैच न करे.

क्वेरी लैंग्वेज की मदद से, डेटा सोर्स को डेटा में बदलाव करने और फ़ॉर्मैटिंग के अनुरोध भेजे जा सकते हैं. साथ ही, यह पक्का किया जा सकता है कि दिखाया गया डेटा स्ट्रक्चर और कॉन्टेंट, अनुमानित स्ट्रक्चर के मुताबिक है.

क्वेरी की भाषा का सिंटैक्स, एसक्यूएल की तरह ही है. एसक्यूएल के बारे में जानने वाले डेवलपर के लिए ज़रूरी है कि वे इस क्वेरी भाषा को तुरंत सीख सकें और उसका इस्तेमाल कर पाएं. वेब पर कई SQL ट्यूटोरियल उपलब्ध हैं. इस क्वेरी भाषा और SQL के बीच कुछ अंतर हैं, जिनके बारे में syntax सेक्शन में बताया गया है.

ध्यान दें कि डेटा सोर्स को क्वेरी की भाषा लागू करने की ज़रूरत नहीं है. अगर वे ऐसा करते हैं, तो भाषा की सभी सुविधाओं को लागू करने के लिए ज़रूरी नहीं है. जब तक आपके पास इस भाषा की सभी सुविधाओं को लागू करने के लिए, किसी डेटा सोर्स पर निर्भर न हों, तब तक आपको इस पर भरोसा नहीं करना चाहिए.

क्वेरी लैंग्वेज का इस्तेमाल करना

डेटा सोर्स के अनुरोध में क्वेरी स्ट्रिंग को दो तरीकों से अटैच किया जा सकता है: JavaScript कोड में क्वेरी स्ट्रिंग को सेट करके या डेटा सोर्स यूआरएल में क्वेरी स्ट्रिंग को पैरामीटर के तौर पर सेट करके. अगर आपके अनुरोध में कोई क्वेरी स्ट्रिंग शामिल नहीं है, तो डेटा सोर्स का डिफ़ॉल्ट तरीका यह है कि वह पंक्ति या कॉलम के डिफ़ॉल्ट क्रम और फ़ॉर्मैटिंग का इस्तेमाल करके सभी पंक्तियां और कॉलम दिखाए. इसे बदलने के लिए, किसी डेटा सोर्स के अनुरोध में एक क्वेरी स्ट्रिंग शामिल की जा सकती है.

JavaScript से क्वेरी सेट करना

JavaScript कोड में क्वेरी स्ट्रिंग को सेट करने के लिए, google.visualization.Query क्लास के setQuery तरीके को कॉल करें.

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

डेटा सोर्स के यूआरएल में क्वेरी सेट करना

tq पैरामीटर का इस्तेमाल करके, क्वेरी स्ट्रिंग को डेटा सोर्स के यूआरएल में जोड़ा जा सकता है. JavaScript के बजाय यूआरएल पैरामीटर में क्वेरी सेट करने से, दूसरे डेवलपर के लिखे गए विज़ुअलाइज़ेशन का आसानी से इस्तेमाल किया जा सकता है. साथ ही, क्वेरी को पसंद के मुताबिक बनाया जा सकता है.

क्वेरी स्ट्रिंग, यूआरएल पैरामीटर के तौर पर सही तरीके से कोड में बदली जानी चाहिए. JavaScript encodeURIComponent फ़ंक्शन का इस्तेमाल करके यूआरएल को कोड में बदला जा सकता है या इस सेक्शन के आखिर में दिए गए एन्कोडिंग टूल का इस्तेमाल करके, उसे खुद कोड में बदला जा सकता है.

उदाहरण:

Google स्प्रेडशीट के लिए नीचे दी गई क्वेरी स्ट्रिंग का इस्तेमाल करें. (ध्यान दें कि स्प्रेडशीट में मौजूद कॉलम आईडी में हमेशा अक्षर होते हैं. पब्लिश की गई स्प्रेडशीट में दिखने वाले कॉलम के शीर्षक के टेक्स्ट में लेबल होते हैं, न कि आईडी. आपको अपनी क्वेरी स्ट्रिंग में, लेबल के बजाय आईडी का इस्तेमाल करना होगा.)

select A, sum(B) group by A

कोड में बदले जाने पर, यह क्वेरी बन जाती है:

select%20A%2C%20sum(B)%20group%20by%20A

मान लें कि यह आपकी स्प्रेडशीट का यूआरएल है:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

अपनी अंतिम क्वेरी स्ट्रिंग प्राप्त करने के लिए /gviz/tq?tq=YOUR_QUERY_STRING को स्प्रैडशीट URL में जोड़ें:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

क्वेरी स्ट्रिंग को कोड में बदलने या डिकोड करने के लिए, नीचे दिए गए टूल का इस्तेमाल करें:

ध्यान दें: निजी स्प्रेडशीट डेटा को ऐक्सेस करने के लिए, OAuth का इस्तेमाल करके, साफ़ तौर पर अनुमति देने वाले क्रेडेंशियल की ज़रूरत होती है. ज़्यादा जानकारी के लिए, Google स्प्रेडशीट: अनुमति देना सेक्शन देखें.

भाषा सिंटैक्स

खास जानकारी

Google विज़ुअलाइज़ेशन API क्वेरी लैंग्वेज सिंटैक्स को SQL सिंटैक्स की तरह डिज़ाइन किया गया है. हालांकि, यह एसक्यूएल का एक सबसेट है, जिसमें इसकी कुछ सुविधाएं हैं, जिन्हें आपको सीखना होगा. अगर आपको एसक्यूएल के बारे में पता है, तो इसे सीखना ज़्यादा मुश्किल नहीं होना चाहिए.

डेटा टेबल

यह दस्तावेज़ किसी क्वेरी के नतीजे के सेट को रेफ़र करने के लिए, डेटा टेबल शब्द का इस्तेमाल करता है. डेटा टेबल में पंक्तियां और कॉलम होते हैं. डेटा टेबल के हर कॉलम में ये प्रॉपर्टी होती हैं:

  • आइडेंटिफ़ायर (या कॉलम आईडी). इसका इस्तेमाल क्वेरी में कॉलम का रेफ़रंस देने के लिए किया जाता है. ध्यान दें कि आपको कभी भी किसी क्वेरी में लेबल के हिसाब से कॉलम का रेफ़रंस देने की कोशिश नहीं करनी चाहिए, सिर्फ़ आइडेंटिफ़ायर के हिसाब से. सलाह: ऐसे किसी भी आईडी का इस्तेमाल न करें जिसमें खाली जगहें हों. खाली जगह को मैनेज करना मुश्किल होता है. इसकी वजह से, कोडिंग में गलतियां हो सकती हैं, लेकिन इन्हें ढूंढना मुश्किल हो सकता है. इसके अलावा, जिस आईडी में स्पेस शामिल हों उसके चारों ओर बैक-कोट होने चाहिए.
  • लेबल. string, जो आम तौर पर असली उपयोगकर्ताओं को दिखाया जाता है. उदाहरण के लिए, पाई चार्ट में लेजेंड के तौर पर या टेबल में कॉलम हेडर.
  • डेटा का प्रकार. string, number, boolean, date, datetime, और timeofday डेटा टाइप का इस्तेमाल किया जा सकता है. किसी कॉलम की सभी वैल्यू के लिए, डेटा का ऐसा टाइप होगा जो कॉलम के टाइप या null वैल्यू से मेल खाता हो. ये टाइप, JavaScript के टाइप से मिलते-जुलते हैं, लेकिन बिलकुल एक जैसे नहीं हैं. इनके बारे में इस पेज के लिटरल सेक्शन में बताया गया है.
  • फ़ॉर्मैटिंग पैटर्न. डेटा सोर्स अपने कुछ या सभी कॉलम के लिए फ़ॉर्मैटिंग पैटर्न तय कर सकता है. फ़ॉर्मैट क्लॉज़ शामिल करके, इस पैटर्न को बदला जा सकता है.

सभी उदाहरणों में इस्तेमाल की गई टेबल:

इस पूरे सेक्शन में, क्वेरी के सभी उदाहरण नीचे दी गई टेबल से जुड़े हैं. कॉलम हेडर, कॉलम आइडेंटिफ़ायर होते हैं.

नाम
string
विभाग
string
lunchTime
timeofday
सैलरी
number
hireDate
date
उम्र
number
isSenior
boolean
seniorityStartTime
datetime
रमेशएग्मा12:00:00
1000
2005-03-1935सही02-12-2007 15:56:00
डेवएग्मा12:00:00
500
2006-04-1927falseशून्य
सैलीएग्मा13:00:00
600
2005-10-1030falseशून्य
बेनबिक्री12:00:00
400
2002-10-1032सही09-03-2005 12:30:00
डेनाबिक्री12:00:00
350
2004-09-0825falseशून्य
माइकमार्केटिंग13:00:00
800
2005-01-1024सही30-12-2007 14:40:00

भाषा के उपनियम

क्वेरी लैंग्वेज का सिंटैक्स इन क्लॉज़ से मिलकर बनता है. हर क्लॉज़ एक या दो कीवर्ड से शुरू होता है. सभी क्लॉज़ ज़रूरी नहीं हैं. उपनियम को खाली जगह के ज़रिए अलग किया जाता है. क्लॉज़ का क्रम इस तरह होना चाहिए:

उपनियम इस्तेमाल का तरीका
select चुनें कि कौनसे कॉलम वापस करने हैं और उनका क्रम क्या है. अगर हटाया जाता है, तो टेबल के सभी कॉलम अपने डिफ़ॉल्ट क्रम में लौट जाते हैं.
where सिर्फ़ उन पंक्तियों को दिखाता है जो किसी शर्त से मेल खाती हैं. अगर इसे छोड़ दिया जाता है, तो सभी पंक्तियां दिखाई जाती हैं.
group by सभी पंक्तियों में मौजूद वैल्यू को एग्रीगेट करता है.
pivot कॉलम की अलग-अलग वैल्यू को नए कॉलम में बदलता है.
order by कॉलम में वैल्यू के हिसाब से पंक्तियों को क्रम से लगाता है.
limit दिखाई जाने वाली पंक्तियों की संख्या को सीमित करता है.
offset दी गई पहली पंक्तियों की संख्या को छोड़ देता है.
label कॉलम के लेबल सेट करता है.
format दिए गए फ़ॉर्मैटिंग पैटर्न का इस्तेमाल करके, कुछ कॉलम में वैल्यू को फ़ॉर्मैट करता है.
options अतिरिक्त विकल्प सेट करता है.
from from क्लॉज़ को इस भाषा से हटा दिया गया है.

 

चुनें

select क्लॉज़ का इस्तेमाल, लौटाए जाने वाले कॉलम और उनके क्रम के बारे में बताने के लिए किया जाता है. अगर यह क्लॉज़ तय नहीं किया गया है या select * का इस्तेमाल किया गया है, तो डेटा सोर्स की टेबल के सभी कॉलम अपने मूल क्रम में दिखते हैं. कॉलम का रेफ़रंस आइडेंटिफ़ायर से ही लगाया जाता है, न कि लेबल से. उदाहरण के लिए, किसी Google स्प्रेडशीट में, कॉलम आइडेंटिफ़ायर एक या दो वर्ण के कॉलम अक्षर (A, B, C, ...) होते हैं.

select क्लॉज़ में मौजूद आइटम, कॉलम आइडेंटिफ़ायर हो सकते हैं. इसके अलावा, ये एग्रीगेशन फ़ंक्शन, स्केलर फ़ंक्शन या ऑपरेटर के आउटपुट भी हो सकते हैं.

उदाहरण:

select *
select dept, salary
select max(salary)

यहां दिए गए उदाहरण में, बैक-कोटेशन का इस्तेमाल उन कॉलम आईडी का रेफ़रंस देने के लिए किया जाता है जिनमें स्पेस (ईमेल पता) या रिज़र्व किए गए शब्द (तारीख) होते हैं:

select `email address`, name, `date`

नीचे दी गई क्वेरी को उदाहरण वाली टेबल पर चलाएं:

select lunchTime, name

यह जवाब दिखाता है:

lunchTime नाम
12:00:00रमेश
12:00:00डेव
13:00:00सैली
12:00:00बेन
12:00:00डेना
13:00:00माइक

कहां हैं

where क्लॉज़ का इस्तेमाल सिर्फ़ उन पंक्तियों को लौटाने के लिए किया जाता है जो किसी खास शर्त से मेल खाती हैं.

सामान्य कंपैरिज़न ऑपरेटर <=, <, >, >=, =, !=, <> होते हैं. दोनों कंपैरिज़न ऑपरेटर != <> का मतलब 'बराबर नहीं है' है. स्ट्रिंग की तुलना लेक्सिकोग्राफ़िक वैल्यू से की जाती है. ध्यान दें कि बराबरी को = से दिखाया जाता है, न कि == से. ऐसा कंप्यूटर की ज़्यादातर भाषाओं के लिए किया जाता है. null से तुलना करने के लिए is null या is not null का इस्तेमाल किया जाता है.

लॉजिकल ऑपरेटर and, or, और not का इस्तेमाल करके, कई शर्तों को जोड़ा जा सकता है. ब्रैकेट का इस्तेमाल करके, प्राथमिकता के बारे में साफ़ तौर पर बताया जा सकता है.

जहां क्लॉज़, स्ट्रिंग की तुलना करने वाले कुछ ज़्यादा जटिल ऑपरेटर भी होते हैं. ये ऑपरेटर, आर्ग्युमेंट के तौर पर दो स्ट्रिंग लेते हैं. तुलना से पहले, नॉन-स्ट्रिंग आर्ग्युमेंट (जैसे, तारीख या संख्याएं) को स्ट्रिंग में बदल दिया जाता है. स्ट्रिंग मैचिंग केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होती है. इसे इस्तेमाल करने के लिए, upper() या lower() स्केलर फ़ंक्शन का इस्तेमाल किया जा सकता है.

  • contains - एक सबस्ट्रिंग मिलान. अगर संगठन का हिस्सा, पूरे में कहीं भी है, तो पूरा contains भाग सही है. उदाहरण: where name contains 'John' 'जॉन', 'जॉन ऐडम्स', 'लॉन्ग जॉन सिल्वर' से मेल खाता है, लेकिन 'जॉन एडम्स' से नहीं.
  • starts with - प्रीफ़िक्स मैच है. अगर प्रीफ़िक्स, value की शुरुआत में है, तो value starts with प्रीफ़िक्स सही होगा. उदाहरण: where dept starts with 'engineering' 'इंजीनियरिंग' और 'इंजीनियरिंग मैनेजर' से मेल खाता है. where dept starts with 'e' 'इंजीनियरिंग', 'eng', और 'e' से मेल खाता है.
  • ends with - सफ़िक्स मैच करता है. अगर value के आखिर में सफ़िक्स है, तो value ends with सफ़िक्स सही है. उदाहरण: where role ends with 'y' 'काउबॉय', 'बॉय', और 'y' से मेल खाता है.
  • matches - A (preg) रेगुलर एक्सप्रेशन मैच करता है. haystack matches needle सही है, अगर needle का रेगुलर एक्सप्रेशन haystack से मेल खाता है. उदाहरण: where country matches '.*ia' भारत और नाइजीरिया से मेल खाता है, लेकिन इंडियाना से नहीं. ध्यान दें कि यह वैश्विक खोज नहीं है, इसलिए where country matches 'an' 'कनाडा' से मेल नहीं खाएगा.
  • like - टेक्स्ट से ऐसी खोज जिसमें दो वाइल्डकार्ड काम करते हैं: %, जो किसी भी तरह के शून्य या उससे ज़्यादा वर्णों से मेल खाता है और _ (अंडरस्कोर), जो किसी भी एक वर्ण से मेल खाता है. यह एसक्यूएल लाइक ऑपरेटर की तरह है. उदाहरण: where name like fre% 'fre', 'फ़्रेड' और 'फ़्रेडी' से मेल खाता है.

उदाहरण:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

नीचे दी गई क्वेरी को उदाहरण वाली टेबल पर चलाएं:

select name where salary > 700

यह जवाब दिखाता है:

नाम
रमेश
माइक

इसके हिसाब से ग्रुप बनाएं

group by क्लॉज़ का इस्तेमाल, सभी पंक्तियों में वैल्यू को एग्रीगेट करने के लिए किया जाता है. 'इसके हिसाब से ग्रुप बनाएं' क्लॉज़ में, वैल्यू के हर अलग-अलग कॉम्बिनेशन के लिए एक पंक्ति बनाई जाती है. डेटा को, ग्रुप वाले कॉलम के हिसाब से अपने-आप क्रम से लगा दिया जाता है. हालांकि, अगर order by क्लॉज़ में ऐसा कुछ और न किया गया हो, तो ऐसा किया जा सकता है.

ध्यान दें: group by क्लॉज़ का इस्तेमाल करने पर, select क्लॉज़ में दिए गए हर कॉलम को या तो group by क्लॉज़ में लिस्ट किया जाना चाहिए या उसे किसी एग्रीगेशन फ़ंक्शन से रैप किया जाना चाहिए.

उदाहरण:

select dept, max(salary) group by dept

नीचे दी गई क्वेरी को उदाहरण वाली टेबल पर चलाएं:

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

यह जवाब दिखाता है:

lunchTime औसत सैलरी काउंट-एज
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

पिवट

pivot क्लॉज़ का इस्तेमाल, कॉलम में मौजूद अलग-अलग वैल्यू को नए कॉलम में बदलने के लिए किया जाता है. उदाहरण के लिए, 'साल' कॉलम के पिवट से, ओरिजनल टेबल में दिखने वाले हर अलग साल के लिए, कॉलम वाली एक टेबल बनेगी. उदाहरण के लिए, यह तब काम का हो सकता है, जब कोई लाइन चार्ट विज़ुअलाइज़ेशन हर कॉलम को एक अलग लाइन के तौर पर दिखाता हो. अगर आपको हर साल के लिए अलग लाइन बनानी है और 'साल' मूल टेबल के कॉलम में से एक है, तो डेटा में ज़रूरी बदलाव करने के लिए, पिवट ऑपरेशन का इस्तेमाल करना एक अच्छा विकल्प होगा.

ध्यान दें: pivot क्लॉज़ का इस्तेमाल करने पर, select क्लॉज़ में दिए गए हर कॉलम को group by क्लॉज़ में शामिल किया जाना चाहिए या उसे एग्रीगेशन फ़ंक्शन से रैप किया जाना चाहिए.

कई पंक्तियों में, पिवट कॉलम में एक जैसी वैल्यू हो सकती हैं. इसलिए, पिवट में एग्रीगेशन शामिल होता है. ध्यान दें कि group by का इस्तेमाल किए बिना pivot का इस्तेमाल करने पर, नतीजे वाली टेबल में सिर्फ़ एक पंक्ति होगी. उदाहरण के लिए, उदाहरण के लिए दी गई टेबल पर यह क्वेरी चलाना:

select sum(salary) pivot dept

यह जवाब दिखाता है:

इंजीनियरिंग सम-सैलरी मार्केटिंग की कुल सैलरी बिक्री का कुल वेतन
2100 800 750

ऐसा इसलिए, क्योंकि 2100, इंजीनियरिंग डिपार्टमेंट के लिए कुल सैलरी का योग है. वहीं, मार्केटिंग डिपार्टमेंट के लिए 800, वगैरह.

group by के साथ pivot का इस्तेमाल करना और भी ज़्यादा काम का हो सकता है, क्योंकि यह एक टेबल बनाता है जिसमें हर सेल में, काम की पंक्ति और काम के कॉलम के एग्रीगेशन का नतीजा होता है. उदाहरण के लिए, उदाहरण वाली टेबल पर इस क्वेरी को चलाना:

select dept, sum(salary)
  group by dept
  pivot lunchTime

यह जवाब दिखाता है:

विभाग 12:00:00 योग-सैलरी 13:00:00 योग-सैलरी
एग्मा 1500 600
मार्केटिंग शून्य 800
बिक्री 750 शून्य

कॉलम और पंक्तियों को बदलकर, इस टेबल को "इनवर्ट" किया जा सकता है. ऐसा करने के लिए, pivot कॉलम और group by कॉलम के बीच स्विच करें. इस क्वेरी को उदाहरण वाली टेबल पर चलाना:

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

यह जवाब दिखाता है:

lunchTime इंजीनियरिंग सम-सैलरी मार्केटिंग की कुल सैलरी बिक्री का कुल वेतन
12:00:00 1500 शून्य 750
13:00:00 600 800 शून्य

pivot क्लॉज़ में एक से ज़्यादा कॉलम का भी इस्तेमाल किया जा सकता है. ऐसे मामले में, जवाब की टेबल के कॉलम, ओरिजनल टेबल में मौजूद कॉलम में मौजूद वैल्यू के सभी यूनीक कॉम्बिनेशन से बने होते हैं. उदाहरण के लिए, उदाहरण के लिए दी गई टेबल पर यह क्वेरी चलाना:

select sum(salary)
  pivot dept, lunchTime

यह जवाब दिखाता है:

अंग्रेज़ी,12:00:00 कुल-सैलरी Eng,13:00:00 योग-सैलरी मार्केटिंग,13:00:00 कुल-सैलरी बिक्री,12:00:00 कुल-सैलरी
1500 600 800 750

ध्यान दें कि जवाब वाली टेबल में सिर्फ़ उन कॉम्बिनेशन को कॉलम दिया जाता है जो ओरिजनल टेबल में दिखते हैं. इसलिए, मार्केटिंग, 12:00:00 या सेल्स के लिए, 13:00:00 वाला कोई कॉलम नहीं है.

एक से ज़्यादा एग्रीगेशन का इस्तेमाल भी किया जा सकता है. उदाहरण के लिए, उदाहरण के लिए दी गई टेबल पर यह क्वेरी चलाना:

select sum(salary), max(lunchTime)
  pivot dept

यह जवाब दिखाता है:

इंजीनियरिंग सम-सैलरी मार्केटिंग की कुल सैलरी बिक्री का कुल वेतन अंग्रेज़ी अधिकतम-लंच समय मार्केटिंग के लिए ज़्यादा से ज़्यादा लंच टाइम बिक्री का अधिकतम-लंच समय
2100 800 750 13:00:00 13:00:00 12:00:00

select क्लॉज़ में एक से ज़्यादा एग्रीगेशन, group by क्लॉज़ में एक से ज़्यादा कॉलम, और pivot क्लॉज़ में एक से ज़्यादा कॉलम को जोड़ा जा सकता है. अंदरूनी तौर पर, पिवट क्लॉज़ और ग्रुप में कॉलम को जोड़कर एग्रीगेशन किया जाता है.

ऐसा हो सकता है कि pivot क्लॉज़ में बताए गए कॉलम, select, group by या order by क्लॉज़ में न दिखें. pivot का इस्तेमाल करने पर, order by क्लॉज़ में कोई एग्रीगेशन कॉलम शामिल नहीं हो सकता. इसकी वजह यह है कि select क्लॉज़ में दिए गए हर एग्रीगेशन के लिए, नतीजे वाली टेबल में कई कॉलम जनरेट होते हैं. हालांकि, pivot का इस्तेमाल करने पर, एग्रीगेशन कॉलम को फ़ॉर्मैट किया जा सकता है. ऐसे फ़ॉर्मैट का नतीजा यह होता है कि किसी खास एग्रीगेशन के लिए काम के सभी नए कॉलम, जो पिवट ऑपरेशन से जनरेट होते हैं उन्हें बताए गए पैटर्न के हिसाब से फ़ॉर्मैट किया जाता है. ऊपर दिए गए उदाहरण में, format sum(salary) "some_format_string" जोड़ने से इन कॉलम पर असर पड़ेगा: Eng योग-सैलरी, मार्केटिंग योग-सैलरी, और बिक्री का योग-सैलरी.

एग्रीगेशन कॉलम को लेबल किया जा सकता है. अगर label क्लॉज़ में कोई लेबल नहीं बताया गया है, तो पिवट कॉलम की वजह से बने कॉलम का लेबल, पिवट कॉलम की वैल्यू की सूची, एग्रीगेशन टाइप (कम से कम, ज़्यादा से ज़्यादा, योग, ...), और एग्रीगेट किए गए कॉलम का लेबल होता है. उदाहरण के लिए, "Eng,12:00:00 sum सैलरी". अगर select क्लॉज़ में सिर्फ़ एक एग्रीगेशन तय किया गया था, तो उस लेबल से एग्रीगेशन वाला हिस्सा हटा दिया जाता है. साथ ही, पिवट कॉलम में सिर्फ़ वैल्यू की सूची रखी जाती है. उदाहरण के लिए, "Eng,12:00:00". जब label क्लॉज़, किसी एग्रीगेशन कॉलम के लिए लेबल तय करता है, तो अनुरोध किए गए लेबल को वैल्यू की सूची में जोड़ दिया जाता है. select क्लॉज़ में सिर्फ़ एक एग्रीगेशन होने और एक से ज़्यादा एग्रीगेशन मौजूद होने पर भी ऐसा किया जाता है. उदाहरण के लिए, label sum(salary) "sumsal" से ये कॉलम लेबल मिलेंगे: "Eng,12:00:00 सुज़ैन", "Eng,13:00:00 सुमसल" वगैरह.

इस हिसाब से ऑर्डर करें

order by क्लॉज़ का इस्तेमाल, बताए गए कॉलम में मौजूद वैल्यू के हिसाब से पंक्तियों को क्रम से लगाने के लिए किया जाता है.

order by क्लॉज़ में मौजूद आइटम, कॉलम आइडेंटिफ़ायर हो सकते हैं. इसके अलावा, ये एग्रीगेशन फ़ंक्शन, स्केलर फ़ंक्शन या ऑपरेटर के आउटपुट भी हो सकते हैं.

उदाहरण:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

सीमा

limit क्लॉज़ का इस्तेमाल, दिखाई जाने वाली पंक्तियों की संख्या को सीमित करने के लिए किया जाता है.

उदाहरण:

limit 100

ऑफ़सेट

offset क्लॉज़ का इस्तेमाल पहली पंक्तियों की दी गई संख्या को छोड़ने के लिए किया जाता है. अगर किसी limit क्लॉज़ का इस्तेमाल किया जाता है, तो offset सबसे पहले लागू होता है: उदाहरण के लिए, limit 15 offset 30, 31 से 45 तक की लाइनें दिखाता है.

उदाहरण:

offset 10
limit 30 offset 210

लेबल

label क्लॉज़ का इस्तेमाल, एक या उससे ज़्यादा कॉलम के लेबल सेट करने के लिए किया जाता है. ध्यान दें कि आप किसी क्वेरी में आईडी की जगह लेबल वैल्यू का इस्तेमाल नहीं कर सकते.

label क्लॉज़ में मौजूद आइटम, कॉलम आइडेंटिफ़ायर हो सकते हैं. इसके अलावा, ये एग्रीगेशन फ़ंक्शन, स्केलर फ़ंक्शन या ऑपरेटर के आउटपुट भी हो सकते हैं.

सिंटैक्स:

label column_id label_string [,column_id label_string]
column_id
वह कॉलम का आइडेंटिफ़ायर जिसे लेबल असाइन किया जा रहा है.
label_string
उस कॉलम को असाइन किया जाने वाला लेबल. कई विज़ुअलाइज़ेशन, असली उपयोगकर्ता को दिखाने के लिए कॉलम लेबल का इस्तेमाल टेक्स्ट के रूप में करते हैं, जैसे कि पाई चार्ट में लेजेंड लेबल. लेबल, स्ट्रिंग की लिटरल वैल्यू होते हैं और सिंटैक्स के उन नियमों का पालन करते हैं.

उदाहरण:

इस उदाहरण में, डिपार्टमेंट कॉलम के लेबल को "डिपार्टमेंट", नाम वाले कॉलम का लेबल "कर्मचारी का नाम", और जगह वाले कॉलम का लेबल "कर्मचारी की जगह" पर सेट किया गया है:

label dept 'Department', name "Employee Name", location 'Employee Location'

फ़ॉर्मैट

format क्लॉज़ का इस्तेमाल, एक या उससे ज़्यादा कॉलम में मौजूद सेल के लिए फ़ॉर्मैट की गई वैल्यू के बारे में बताने के लिए किया जाता है. लौटाए गए डेटा में, फ़ॉर्मैट किए गए कॉलम में हर सेल के लिए असल वैल्यू और फ़ॉर्मैट की गई वैल्यू, दोनों होनी चाहिए. कई विज़ुअलाइज़ेशन में कैलकुलेशन के लिए, फ़ॉर्मैट नहीं की गई वैल्यू का इस्तेमाल किया जाता है, लेकिन डिसप्ले के लिए फ़ॉर्मैट की गई वैल्यू का इस्तेमाल किया जाता है. इस क्लॉज़ में आपने जो पैटर्न तय किए हैं वे आम तौर पर, उनसे जुड़े कॉलम की पैटर्न प्रॉपर्टी में दिखाए जाते हैं.

पैटर्न सिंटैक्स:

number, date, timeofday, datetime
तारीख और संख्या पैटर्न आईसीयू के मुताबिक तय किए जाते हैं.
boolean
पैटर्न एक string है, जिसका फ़ॉर्मैट 'value-if-true:value-if-false' होता है.

उदाहरण:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

 

विकल्प

options क्लॉज़ का इस्तेमाल, क्वेरी को एक्ज़ीक्यूट करने के अन्य विकल्पों को कंट्रोल करने के लिए किया जाता है. options क्लॉज़ को फ़ॉलो करने वाले संभावित कीवर्ड ये हैं:

  • no_format नतीजे से फ़ॉर्मैट की गई वैल्यू हटाता है और सिर्फ़ पहले से मौजूद वैल्यू को छोड़ देता है. इसका इस्तेमाल तब किया जा सकता है, जब जवाब का साइज़ कम करने के लिए, कोई खास विज़ुअलाइज़ेशन, फ़ॉर्मैट की गई वैल्यू का इस्तेमाल न करता हो.
  • no_values नतीजे से मौजूदा वैल्यू हटाता है और सिर्फ़ फ़ॉर्मैट की गई वैल्यू छोड़ता है. इसका इस्तेमाल तब किया जा सकता है, जब खास विज़ुअलाइज़ेशन में जवाब का साइज़ कम करने के लिए, सिर्फ़ फ़ॉर्मैट की गई वैल्यू का इस्तेमाल किया जाता है.

डेटा में बदलाव करने के फ़ंक्शन

ऐसे कई तरह के ऑपरेटर और फ़ंक्शन हैं जिनकी मदद से, एक ही कॉलम में डेटा में हेर-फेर या एग्रीगेट किया जा सकता है या सभी कॉलम के डेटा की तुलना की जा सकती है या उसे आपस में जोड़ा जा सकता है. उदाहरणों में, sum() (कॉलम में सभी वैल्यू जोड़ने के लिए), सबसे बड़ी वैल्यू (कॉलम में सबसे बड़ी वैल्यू ढूंढने के लिए), और + (एक ही लाइन में दो कॉलम की वैल्यू को एक साथ जोड़ने के लिए) शामिल है.

कुछ फ़ंक्शन किसी भी क्लॉज़ में दिख सकते हैं और कुछ फ़ंक्शन, क्लॉज़ के सबसेट में दिख सकते हैं. इसका दस्तावेज़ नीचे दिया गया है.

उदाहरण:

इस टेबल में दी गई जानकारी... अगर हम इस क्वेरी को लागू करते हैं... हमें यह नतीजा मिला है.
नाम वेतन टैक्स StartDate
बनियान 1000 100 1/1/2009
अवीटल 2,000 200 21/1/2008
Moran 3000 300 12/2/2008
select upper(name), year(startDate)
नाम साल(StartDate)
अविटैल 2008
मोरन 2008
शैरन 2009

 

Google विज़ुअलाइज़ेशन एपीआई क्वेरी की भाषा से, डेटा में बदलाव करने वाले ये फ़ंक्शन तय किए जाते हैं:

 

एग्रीगेशन के फ़ंक्शन

एग्रीगेशन फ़ंक्शन, एक कॉलम आइडेंटिफ़ायर पास करते हैं और हर ग्रुप की सभी वैल्यू के लिए कार्रवाई करते हैं (ग्रुप को group by या pivot क्लॉज़ या सभी पंक्तियों में बताया जाता है, अगर उन क्लॉज़ का इस्तेमाल नहीं किया गया है).

उदाहरण:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

एग्रीगेशन फ़ंक्शन का इस्तेमाल select, order by, label, format क्लॉज़ में किया जा सकता है. वे where, group by, pivot, limit, offset या options क्लॉज़ में नहीं दिख सकते.

यहां, इस्तेमाल किए जा सकने वाले एग्रीगेशन फ़ंक्शन दिए गए हैं:

नाम ब्यौरा इस्तेमाल किए जा सकने वाले कॉलम टाइप रिटर्न टाइप
avg() यह फ़ंक्शन किसी ग्रुप के कॉलम में मौजूद सभी वैल्यू की औसत वैल्यू दिखाता है. number number
count() यह फ़ंक्शन किसी ग्रुप के लिए, तय किए गए कॉलम में एलिमेंट की संख्या दिखाता है. शून्य सेल की गिनती नहीं की जाती है. किसी भी तरह का कॉन्टेंट number
max() यह फ़ंक्शन किसी ग्रुप के कॉलम में, सबसे बड़ी संख्या दिखाता है. तारीखों की तुलना, पहले से छोटे होने के साथ की जाती है और string की तुलना वर्णमाला के हिसाब से की जाती है और केस-सेंसिटिविटी (बड़े और छोटे अक्षरों में अंतर) की जाती है. किसी भी तरह का कॉन्टेंट कॉलम की तरह ही
min() यह फ़ंक्शन किसी ग्रुप के कॉलम में, सबसे छोटी संख्या दिखाता है. तारीखों की तुलना, पहले से छोटी संख्या से की जाती है और string को अंग्रेज़ी वर्णमाला के क्रम में और केस-सेंसिटिविटी (बड़े और छोटे अक्षरों में अंतर) के साथ दिखाया जाता है किसी भी तरह का कॉन्टेंट कॉलम की तरह ही
sum() यह फ़ंक्शन किसी ग्रुप के कॉलम में मौजूद सभी वैल्यू का योग दिखाता है. number number

ध्यान दें: एग्रीगेशन फ़ंक्शन, कॉलम आइडेंटिफ़ायर को सिर्फ़ तर्क के तौर पर ले सकते हैं:

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

स्केलर के फ़ंक्शन

स्केलर फ़ंक्शन, कोई अन्य वैल्यू जनरेट करने के लिए शून्य या उससे ज़्यादा पैरामीटर का इस्तेमाल करते हैं. स्केलर फ़ंक्शन को ऐसे किसी भी एक्सप्रेशन को पास किया जा सकता है जो सही टाइप के पैरामीटर का आकलन करता हो. ध्यान दें कि इस तरह के टाइप इस दस्तावेज़ के लिटरल सेक्शन में बताए गए हैं. ये मिलते-जुलते नाम वाले JavaScript ऑब्जेक्ट से थोड़े अलग हो सकते हैं.

ध्यान दें कि कॉलम का नाम, अदिश फ़ंक्शन के साथ रैप करके बदल जाएगा.

स्केलर फ़ंक्शन को किसी भी ऐसे पैरामीटर के तौर पर इस्तेमाल किया जा सकता है जो सिंगल वैल्यू दिखाता है:

year(max(startDate))
datediff(now(), todate(1234567890000))

स्केलर फ़ंक्शन का इस्तेमाल, इनमें से किसी भी क्लॉज़ में किया जा सकता है: select, where, group by, pivot, order by, label,, और format.

नाम
year()

किसी तारीख या तारीख और समय की वैल्यू में से, साल की वैल्यू दिखाता है. उदाहरण के लिए: year(date "2009-02-05"), 2009 दिखाता है.

पैरामीटर: date या datetime टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
month()

किसी तारीख या तारीख और समय के मान से, शून्य पर आधारित महीने की वैल्यू दिखाता है. जैसे: month(date "2009-02-05") नतीजे के तौर पर 1 दिखाता है. ध्यान दें: महीने 0 पर आधारित होते हैं. इसलिए, फ़ंक्शन जनवरी के लिए 0, फ़रवरी के लिए 1 वगैरह दिखाता है.

पैरामीटर: date या datetime टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
day()

यह फ़ंक्शन date या तारीख और समय की वैल्यू से महीने का दिन दिखाता है. जैसे: day(date "2009-02-05"), नतीजे के तौर पर 5 दिखाता है.

पैरामीटर: date या datetime टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
hour()

किसी तारीख और timeofday वैल्यू से घंटे की वैल्यू दिखाता है. जैसे: hour(timeofday "12:03:17"), 12 दिखाता है.

पैरामीटर: datetime या timeofday टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
minute()

किसी datetime या timeofday वैल्यू से मिनट की वैल्यू दिखाता है. जैसे: minute(timeofday "12:03:17"), नतीजे के तौर पर 3 दिखाता है.

पैरामीटर: datetime या timeofday टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
second()

datetime या timeofday वैल्यू से दूसरी वैल्यू दिखाता है. जैसे: second(timeofday "12:03:17"), 17 दिखाता है.

पैरामीटर: datetime या timeofday टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
millisecond()

datetime या timeofday वैल्यू का मिलीसेकंड वाला हिस्सा दिखाता है. जैसे: millisecond(timeofday "12:03:17.123"), 123 दिखाता है.

पैरामीटर: datetime या timeofday टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
quarter()

date या datetime वैल्यू से तिमाही दिखाता है. जैसे: quarter(date "2009-02-05") नतीजे के तौर पर 1 दिखाता है. ध्यान दें कि तिमाही 1-आधारित होती हैं, इसलिए फ़ंक्शन पहली तिमाही के लिए 1, दूसरी के लिए 2 दिखाता है वगैरह.

पैरामीटर: date या datetime टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
dayOfWeek()

date या datetime वैल्यू से हफ़्ते का दिन दिखाता है. जैसे: dayOfWeek(date "2009-02-26"), नतीजे के तौर पर 5 दिखाता है. ध्यान दें कि दिन 1 के हिसाब से होते हैं. इसलिए, फ़ंक्शन रविवार के लिए 1, सोमवार के लिए 2 वगैरह दिखाता है.

पैरामीटर: date या datetime टाइप का एक पैरामीटर
सामान लौटाने का तरीका: number
now()

यह फ़ंक्शन जीएमटी टाइमज़ोन में मौजूदा datetime को दिखाने वाली तारीख और समय की वैल्यू दिखाता है.

पैरामीटर: कोई नहीं
सामान लौटाने का तरीका: datetime
dateDiff()

date या datetime की दो वैल्यू के बीच के दिनों का अंतर दिखाता है. ध्यान दें: वैल्यू के सिर्फ़ date हिस्सों का इस्तेमाल, कैलकुलेशन में किया जाता है. इसलिए, फ़ंक्शन हमेशा पूर्णांक वैल्यू दिखाता है. उदाहरण के लिए: dateDiff(date "2008-03-13", date "2008-02-12"), 29 दिखाता है; dateDiff(date "2009-02-13", date "2009-03-13"), -29 दिखाता है. तुलना से पहले, समय की वैल्यू में काट-छांट की जाती है.

पैरामीटर: date या datetime टाइप के दो पैरामीटर (हर एक पैरामीटर का इस्तेमाल किया जा सकता है)
सामान लौटाने का तरीका: number
toDate()

दी गई वैल्यू को date वैल्यू में बदलता है.

  • date दिए जाने पर, यह वही वैल्यू दिखाता है.
  • datetime दिए जाने पर, यह date वाला हिस्सा दिखाता है. उदाहरण के लिए: toDate(dateTime "2009-01-01 12:00:00") "01-01-2009" दिखाता है.
  • number N दिए जाने पर, यह Epoch के बाद date N मिलीसेकंड दिखाता है. Epoch को 1 जनवरी,1970, 00:00:00 जीएमटी के तौर पर बताया गया है. उदाहरण के लिए: toDate(1234567890000), "13-02-2009" दिखाता है.
पैरामीटर: date, datetime या number टाइप का एक पैरामीटर
सामान लौटाने का तरीका: date
upper()

दिए गए string को अंग्रेज़ी के बड़े अक्षरों में दिखाता है. उदाहरण के लिए: upper("foo"), "FOO" दिखाता है.

पैरामीटर: string टाइप का एक पैरामीटर
सामान लौटाने का तरीका: string
lower()

दिया गया string लोअर केस अक्षरों में देता है. उदाहरण के लिए: lower("Bar"), "bar" दिखाता है.

पैरामीटर: string टाइप का एक पैरामीटर
सामान लौटाने का तरीका: string

अरिथमेटिक ऑपरेटर

किसी सिंगल नंबर (यानी कि एग्रीगेट फ़ंक्शन, ऑपरेटर या कॉन्सटेंट का आउटपुट) की वैल्यू देने वाली किसी भी चीज़ पर, अंकगणित के ऑपरेटर इस्तेमाल करके मैथमैटिकल कैलकुलेशन किए जा सकते हैं.

उदाहरण:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

नीचे दिए गए ऑपरेटर तय किए गए हैं:

नाम ब्यौरा पैरामीटर रिटर्न टाइप
+ दो number वैल्यू का योग दिखाता है. दो number number
- number की दो वैल्यू के बीच का अंतर दिखाता है. दो number number
* दो number का प्रॉडक्ट दिखाता है. दो number number
/ दो number का भागफल देता है. शून्य से भाग देने पर शून्य मिलता है. दो number number

भाषा के एलिमेंट

लिटरल वैल्यू

लिटरल वैल्यू का इस्तेमाल तुलना या असाइनमेंट के लिए किया जाता है. लिटरल वैल्यू में string, संख्याएं, बूलियन वैल्यू या अलग-अलग तरह की तारीख/समय शामिल हो सकते हैं. क्वेरी सिंटैक्स में इस्तेमाल होने वाली लिटरल वैल्यू के कुछ उदाहरण यहां दिए गए हैं:

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

यहां हर टाइप की लिटरल वैल्यू के फ़ॉर्मैट दिए गए हैं:

string
string की लिटरल वैल्यू को एक या डबल कोट में रखा जाना चाहिए. उदाहरण: "fourteen" 'hello world' "It's raining".
number
संख्या वाली लिटरल वैल्यू को दशमलव नोटेशन में रखा जाता है. उदाहरण: 3  3.0  3.14  -71  -7.2  .6
boolean
बूलियन लिटरल वैल्यू true या false होती हैं.
date
yyyy-MM-dd फ़ॉर्मैट में कीवर्ड date के बाद string लिटरल का इस्तेमाल करें. उदाहरण: date "2008-03-18".
timeofday
HH:mm:ss[.SSS] फ़ॉर्मैट में timeofday कीवर्ड के बाद string लिटरल इस्तेमाल करें उदाहरण: timeofday "12:30:45".
datetime
तारीख और समय, जिसमें कीवर्ड datetime या कीवर्ड timestamp के बाद yyyy-MM-dd HH:mm:ss[.sss] फ़ॉर्मैट में string लिटरल हो. उदाहरण: datetime '2008-03-18 12:30:34.123'

आइडेंटिफ़ायर

आइडेंटिफ़ायर (या आईडी), ऐसे टेक्स्ट string होते हैं जो कॉलम की पहचान करते हैं.

अहम जानकारी: अगर आपका आइडेंटिफ़ायर

  • इसमें स्पेस हैं
  • एक रिज़र्व किया गया शब्द है,
  • इसमें अक्षर और अंक या अंडरस्कोर के अलावा, कुछ भी शामिल हो सकता है ([a-zA-Z0-9_]), या
  • अंक से शुरू होता है

इसे बैक-कोट (सिंगल कोट नहीं) में रखा जाना ज़रूरी है.

अगर ऐसा नहीं है, तो आपके आइडेंटिफ़ायर को कोट करने की ज़रूरत नहीं है. (ध्यान दें कि सिंटैक्स से तय किए गए सभी कीवर्ड, रिज़र्व शब्द नहीं होते. इसलिए, उदाहरण के लिए, "max" का इस्तेमाल, आइडेंटिफ़ायर के तौर पर किया जा सकता है. इसके लिए, आपको इसे बैक-कोट करने की भी ज़रूरत नहीं है.)

उदाहरण: col1   employee_table   `start date`   `7 days traffic`   `select`

हम ऐसा आइडेंटिफ़ायर न चुनने का सुझाव देते हैं जिसके लिए बैक-कोट की ज़रूरत होती है. ऐसा इसलिए, क्योंकि कभी-कभी बैक-कोट भी इस्तेमाल करने पड़ते हैं. इसके अलावा, गलती से `बैक-कोट` की जगह 'सिंगल कोट' का भी इस्तेमाल किया जा सकता है. ये आम गलतियां होती हैं और इन्हें डीबग करना अक्सर मुश्किल होता है.

केस सेंसिटिविटी

आइडेंटिफ़ायर और स्ट्रिंग की लिटरल वैल्यू केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होती हैं. भाषा के दूसरे सभी एलिमेंट केस-इनसेंसिटिव होते हैं.

बुक किए गए शब्द

अगर इन शब्दों को आइडेंटिफ़ायर के तौर पर इस्तेमाल किया जाता है, तो बुक किए गए इन शब्दों को बैक-कोट किया जाना चाहिए:

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where