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 |
lunchTimetimeofday |
सैलरी number |
hireDatedate |
उम्रnumber |
isSeniorboolean |
seniorityStartTimedatetime |
---|---|---|---|---|---|---|---|
रमेश | एग्मा | 12:00:00 | 1000 | 2005-03-19 | 35 | सही | 02-12-2007 15:56:00 |
डेव | एग्मा | 12:00:00 | 500 | 2006-04-19 | 27 | false | शून्य |
सैली | एग्मा | 13:00:00 | 600 | 2005-10-10 | 30 | false | शून्य |
बेन | बिक्री | 12:00:00 | 400 | 2002-10-10 | 32 | सही | 09-03-2005 12:30:00 |
डेना | बिक्री | 12:00:00 | 350 | 2004-09-08 | 25 | false | शून्य |
माइक | मार्केटिंग | 13:00:00 | 800 | 2005-01-10 | 24 | सही | 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 की शुरुआत में है, तो valuestarts with
प्रीफ़िक्स सही होगा. उदाहरण:where dept starts with 'engineering'
'इंजीनियरिंग' और 'इंजीनियरिंग मैनेजर' से मेल खाता है.where dept starts with 'e'
'इंजीनियरिंग', 'eng', और 'e' से मेल खाता है.ends with
- सफ़िक्स मैच करता है. अगर value के आखिर में सफ़िक्स है, तो valueends with
सफ़िक्स सही है. उदाहरण:where role ends with 'y'
'काउबॉय', 'बॉय', और 'y' से मेल खाता है.matches
- A (preg) रेगुलर एक्सप्रेशन मैच करता है. haystackmatches
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() (कॉलम में सभी वैल्यू जोड़ने के लिए), सबसे बड़ी वैल्यू (कॉलम में सबसे बड़ी वैल्यू ढूंढने के लिए), और + (एक ही लाइन में दो कॉलम की वैल्यू को एक साथ जोड़ने के लिए) शामिल है.
कुछ फ़ंक्शन किसी भी क्लॉज़ में दिख सकते हैं और कुछ फ़ंक्शन, क्लॉज़ के सबसेट में दिख सकते हैं. इसका दस्तावेज़ नीचे दिया गया है.
उदाहरण:
इस टेबल में दी गई जानकारी... | अगर हम इस क्वेरी को लागू करते हैं... | हमें यह नतीजा मिला है. | ||||||||||||||||||||||||
|
select upper(name), year(startDate) |
|
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() |
किसी तारीख या तारीख और समय की वैल्यू में से, साल की वैल्यू दिखाता है. उदाहरण के लिए: पैरामीटर:
date या datetime टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
month() |
किसी तारीख या तारीख और समय के मान से, शून्य पर आधारित महीने की वैल्यू दिखाता है. जैसे:
पैरामीटर:
date या datetime टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
day() |
यह फ़ंक्शन पैरामीटर:
date या datetime टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
hour() |
किसी तारीख और पैरामीटर:
datetime या timeofday टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
minute() |
किसी पैरामीटर:
datetime या timeofday टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
second() |
पैरामीटर:
datetime या timeofday टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
millisecond() |
पैरामीटर:
datetime या timeofday टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
quarter() |
पैरामीटर:
date या datetime टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
dayOfWeek() |
पैरामीटर:
date या datetime टाइप का एक पैरामीटरसामान लौटाने का तरीका:
number |
now() |
यह फ़ंक्शन जीएमटी टाइमज़ोन में मौजूदा पैरामीटर: कोई नहीं
सामान लौटाने का तरीका:
datetime |
dateDiff() |
पैरामीटर:
date या datetime टाइप के दो पैरामीटर (हर एक पैरामीटर का इस्तेमाल किया जा सकता है)सामान लौटाने का तरीका:
number |
toDate() |
दी गई वैल्यू को
पैरामीटर:
date , datetime या number टाइप का एक पैरामीटरसामान लौटाने का तरीका:
date |
upper() |
दिए गए पैरामीटर:
string टाइप का एक पैरामीटरसामान लौटाने का तरीका:
string |
lower() |
दिया गया पैरामीटर:
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