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-19 | 35 | true | 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 | true | 09-03-2005 12:30:00 |
डाना | बिक्री | 12:00:00 | 350 | 2004-09-08 | 25 | false | शून्य |
माइक | Marketing | 13:00:00 | 800 | 2005-01-10 | 24 | true | 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
यह प्रतिक्रिया देता है:
लंच का समय | नाम |
---|---|
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 (प्री) रेगुलर एक्सप्रेशन का मैच. haystackmatches
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
नतीजे से बुनियादी वैल्यू हटा देता है और सिर्फ़ फ़ॉर्मैट की गई वैल्यू ही छोड़ देता है. इसका इस्तेमाल तब किया जा सकता है, जब खास विज़ुअलाइज़ेशन, रिस्पॉन्स का साइज़ कम करने के लिए सिर्फ़ फ़ॉर्मैट की गई वैल्यू का इस्तेमाल करता है.
डेटा में बदलाव करने के फ़ंक्शन
कई तरह के ऑपरेटर और फ़ंक्शन होते हैं जिनका इस्तेमाल करके एक ही कॉलम में डेटा के साथ छेड़छाड़ की जा सकती है या उसे इकट्ठा किया जा सकता है. इसके अलावा, सभी कॉलम के डेटा की तुलना की जा सकती है या उसे जोड़ा जा सकता है. उदाहरण के तौर पर, कुल वैल्यू (किसी कॉलम में सभी वैल्यू जोड़ने के लिए), ज़्यादा से ज़्यादा (किसी कॉलम में सबसे बड़ी वैल्यू ढूंढने के लिए), और + (एक ही लाइन में दो कॉलम की वैल्यू एक साथ जोड़ने के लिए) शामिल हैं.
कुछ फ़ंक्शन किसी भी क्लॉज़ में दिख सकते हैं; कुछ फ़ंक्शन क्लॉज़ के सबसेट में दिख सकते हैं. इसका दस्तावेज़ नीचे दिया गया है.
उदाहरण:
इस टेबल को चुनने के बाद... | अगर हम इस क्वेरी को लागू करते हैं... | हमें यह नतीजा मिला. | ||||||||||||||||||||||||
|
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
- कीवर्ड
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