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

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

विषय सूची

परिचय

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

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

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

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

क्वेरी की भाषा का इस्तेमाल करना

क्वेरी स्ट्रिंग को डेटा सोर्स के अनुरोध में दो तरीकों से अटैच किया जा सकता है: 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 जोड़ें:

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

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

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

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

खास जानकारी

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

डेटा टेबल

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

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

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

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

नाम
string
विभाग
string
लंच का समय
timeofday
सैलरी
number
नौकरी पर रखने की तारीख
date
उम्र
number
वरिष्ठ है
boolean
वरिष्ठता का समय
datetime
रमेशएग्मा12:00:00
1000
2005-03-1935true02-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-1032true09-03-2005 12:30:00
डानाबिक्री12:00:00
350
2004-09-0825falseशून्य
माइकMarketing13:00:00
800
2005-01-1024true30-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

यह प्रतिक्रिया देता है:

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

यह प्रतिक्रिया देता है:

लंच का समय औसत सैलरी उम्र
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 क्लॉज़ में शामिल किया जाना चाहिए या फिर एग्रीगेशन फ़ंक्शन में रैप किया जाना चाहिए

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

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
Marketing शून्य 800
बिक्री 750 शून्य

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

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

यह प्रतिक्रिया देता है:

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

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

select sum(salary)
  pivot dept, lunchTime

यह प्रतिक्रिया देता है:

इंजीनियरिंग,12:00:00 कुल सैलरी इंजीनियरिंग: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" को जोड़ने से इन कॉलम पर असर पड़ेगा: इंजीनियरिंग से जुड़ी सैलरी, मार्केटिंग की कुल सैलरी और बिक्री की कुल सैलरी.

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

इसके अनुसार ऑर्डर

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

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

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

उदाहरण:

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

 

विकल्प

options क्लॉज़ का इस्तेमाल क्वेरी के निष्पादन के लिए अतिरिक्त विकल्पों को नियंत्रित करने के लिए किया जाता है. options क्लॉज़ के हिसाब से ये कीवर्ड हो सकते हैं:

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

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

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

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

उदाहरण:

इस टेबल को चुनने के बाद... अगर हम इस क्वेरी को लागू करते हैं... हमें यह नतीजा मिला.
नाम वेतन टैक्स शुरू होने की तारीख
बनियान 1000 100 1/1/2009
एविटल 2000 200 21/1/2008
Moran 3000 300 12/2/2008
select upper(name), year(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, सोमवार के लिए दो, वगैरह देता है.

पैरामीटर: 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
कीवर्ड date का इस्तेमाल करने के बाद, yyyy-MM-dd फ़ॉर्मैट में string लिटरल का इस्तेमाल करें. उदाहरण: date "2008-03-18".
timeofday
कीवर्ड timeofday का इस्तेमाल करने के बाद, HH:mm:ss[.SSS] टाइटल के फ़ॉर्मैट में string लिटरल का इस्तेमाल करें उदाहरण: timeofday "12:30:45".
datetime
तारीख और समय, कीवर्ड या तो datetime या कीवर्ड timestamp के बाद string के फ़ॉर्मैट में yyyy-MM-dd HH:mm:ss[.sss] का इस्तेमाल किया जा सकता है. उदाहरण: datetime '2008-03-18 12:30:34.123'

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

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

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

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

यह बैक-कोट (किसी एक कोट के बजाय) से घिरा होना चाहिए.

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

उदाहरण: 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