গুগল ভিজ্যুয়ালাইজেশন এপিআই ক্যোয়ারী ল্যাঙ্গুয়েজ আপনাকে ডেটা উৎসের ক্যোয়ারী সহ বিভিন্ন ডেটা ম্যানিপুলেশন করতে দেয়।
সুচিপত্র
ভূমিকা
সাধারণত, ভিজ্যুয়ালাইজেশন কিছু নির্দিষ্ট আকারে ডেটা আশা করে। উদাহরণস্বরূপ, একটি পাই চার্ট দুটি কলাম হিসাবে ডেটা আশা করতে পারে: একটি পাঠ্য লেবেল এবং একটি সংখ্যাসূচক মান। ডেটা উত্সের মধ্যে থাকা ডেটা এই কাঠামোর সাথে ঠিক মেলে না। উদাহরণ স্বরূপ ডাটা সোর্সে দুইটির বেশি কলাম থাকতে পারে, অথবা কলামের ক্রম পাই চার্টের প্রত্যাশিত অর্ডারের সাথে মেলে না।
ক্যোয়ারী ভাষা ডেটা উৎসে ডেটা ম্যানিপুলেশন এবং ফরম্যাটিং অনুরোধ পাঠানোর ক্ষমতা প্রদান করে এবং নিশ্চিত করে যে প্রত্যাবর্তিত ডেটা কাঠামো এবং বিষয়বস্তু প্রত্যাশিত কাঠামোর সাথে মেলে।
ক্যোয়ারী ভাষার সিনট্যাক্স SQL এর অনুরূপ। এসকিউএল-এর সাথে পরিচিত ডেভেলপারদের দ্রুত এই ক্যোয়ারী ভাষা শিখতে এবং ব্যবহার করতে সক্ষম হওয়া উচিত। ওয়েবে অনেক SQL টিউটোরিয়াল পাওয়া যায়। এই ক্যোয়ারী ভাষা এবং SQL এর মধ্যে কিছু পার্থক্য রয়েছে যা সিনট্যাক্স বিভাগে বর্ণনা করা হয়েছে।
মনে রাখবেন যে কোয়েরি ভাষা প্রয়োগ করতে ডেটা উত্সগুলির প্রয়োজন হয় না, বা যদি তারা করে তবে ভাষার সমস্ত বৈশিষ্ট্য বাস্তবায়ন করতে। অন্যথায় বিশ্বাস করার কারণ না থাকলে, এই ভাষার সমস্ত বৈশিষ্ট্য বাস্তবায়নের জন্য আপনার কোনো ডেটা উৎসের উপর নির্ভর করা উচিত নয়।
ক্যোয়ারী ভাষা ব্যবহার করে
আপনি দুটি উপায়ে একটি ডেটা উত্স অনুরোধে একটি ক্যোয়ারী স্ট্রিং সংযুক্ত করতে পারেন: জাভাস্ক্রিপ্ট কোডের মধ্যে থেকে কোয়েরি স্ট্রিং সেট করে, অথবা ডেটা উত্স URL- এ একটি প্যারামিটার হিসাবে ক্যোয়ারী স্ট্রিং সেট করে৷ যদি আপনার অনুরোধে একটি ক্যোয়ারী স্ট্রিং অন্তর্ভুক্ত না থাকে, তাহলে একটি ডেটা উৎসের জন্য ডিফল্ট আচরণ হল তার ডিফল্ট সারি/কলাম ক্রম এবং বিন্যাস ব্যবহার করে সমস্ত সারি এবং কলাম ফেরত দেওয়া। আপনি একটি ডেটা উৎসে আপনার অনুরোধে একটি ক্যোয়ারী স্ট্রিং অন্তর্ভুক্ত করে এটি পরিবর্তন করতে পারেন।
জাভাস্ক্রিপ্ট থেকে ক্যোয়ারী সেট করা
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);
ডেটা উৎস URL-এ ক্যোয়ারী সেট করা
ক্যোয়ারী স্ট্রিংটি tq
প্যারামিটার ব্যবহার করে ডেটা সোর্স URL-এ যোগ করা যেতে পারে। JavaScript-এর পরিবর্তে URL প্যারামিটারে ক্যোয়ারী সেট করা আপনাকে সহজেই অন্যান্য ডেভেলপারদের দ্বারা লিখিত ভিজ্যুয়ালাইজেশন ব্যবহার করতে দেয় এবং তারপরও ক্যোয়ারী কাস্টমাইজ করতে সক্ষম হয়।
ক্যোয়ারী স্ট্রিং একটি URL প্যারামিটার হিসাবে সঠিকভাবে এনকোড করা আবশ্যক। আপনি JavaScript encodeURIComponent
ফাংশন ব্যবহার করে একটি URL এনকোড করতে পারেন, অথবা আপনি এই বিভাগের শেষে এনকোডিং টুল ব্যবহার করে হাতে এনকোড করতে পারেন।
উদাহরণ:
একটি Google স্প্রেডশীটের জন্য নিম্নলিখিত ক্যোয়ারী স্ট্রিংটি বিবেচনা করুন৷ (মনে রাখবেন যে স্প্রেডশীটে কলাম আইডিগুলি সর্বদা অক্ষর হয়; প্রকাশিত স্প্রেডশীটে দেখানো কলাম শিরোনাম পাঠ্যটি লেবেল, আইডি নয়। আপনার ক্যোয়ারী স্ট্রিংয়ে আপনাকে অবশ্যই আইডি ব্যবহার করতে হবে, লেবেল নয়।)
select A, sum(B) group by A
এনকোড করা হলে, এই প্রশ্নটি হয়ে যায়:
select%20A%2C%20sum(B)%20group%20by%20A
অনুমান করুন যে এটি আপনার স্প্রেডশীটের URL:
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4
আপনার চূড়ান্ত ক্যোয়ারী স্ট্রিং পেতে স্প্রেডশীট URL-এ /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 ব্যবহার করে স্পষ্ট অনুমোদনের শংসাপত্রগুলি পাস করতে হবে। আরও বিস্তারিত জানার জন্য Google স্প্রেডশীট: অনুমোদন বিভাগ দেখুন।
ভাষা সিনট্যাক্স
ওভারভিউ
গুগল ভিজ্যুয়ালাইজেশন এপিআই কোয়েরি ল্যাঙ্গুয়েজ সিনট্যাক্সটি এসকিউএল সিনট্যাক্সের মতো ডিজাইন করা হয়েছে। যাইহোক, এটি এসকিউএল এর একটি উপসেট, এর নিজস্ব কিছু বৈশিষ্ট্য সহ যা আপনাকে শিখতে হবে। আপনি যদি এসকিউএল-এর সাথে পরিচিত হন তবে এটি শেখা খুব কঠিন হবে না।
ডেটা টেবিল
এই নথিটি একটি প্রশ্নের ফলাফল সেট উল্লেখ করতে ডেটা টেবিল শব্দটি ব্যবহার করে। একটি ডেটা টেবিল সারি এবং কলাম নিয়ে গঠিত। একটি ডেটা টেবিলের প্রতিটি কলামের নিম্নলিখিত বৈশিষ্ট্য রয়েছে:
- শনাক্তকারী (বা কলাম আইডি )। কোয়েরির মধ্যে কলাম রেফারেন্স করতে ব্যবহৃত হয়। মনে রাখবেন যে আপনি কখনই একটি ক্যোয়ারীতে লেবেল দ্বারা একটি কলাম উল্লেখ করার চেষ্টা করবেন না, শুধুমাত্র শনাক্তকারী দ্বারা। টিপ: স্পেস আছে এমন কোনো আইডি ব্যবহার না করার চেষ্টা করুন; স্পেসগুলি পরিচালনা করা কঠিন এবং আপনার কোডিংয়ে আপনাকে ছোট, কিন্তু ভুল খুঁজে পাওয়া কঠিন হতে পারে। অতিরিক্তভাবে, একটি আইডি যাতে স্পেস রয়েছে তা অবশ্যই ব্যাক-কোট দ্বারা বেষ্টিত হতে হবে।
- লেবেল একটি
string
যা সাধারণত শেষ ব্যবহারকারীদের কাছে প্রদর্শিত হয়। উদাহরণস্বরূপ একটি পাই চার্টের মধ্যে একটি কিংবদন্তি হিসাবে, বা একটি টেবিলে একটি কলাম হেডার৷ - ডেটা টাইপ । সমর্থিত ডেটা প্রকারগুলি হল
string
,number
,boolean
,date
,datetime
এবংtimeofday
। একটি কলামের সমস্ত মানগুলির একটি ডেটা টাইপ থাকবে যা কলামের প্রকারের সাথে মেলে, বা একটিnull
মান। এই ধরনের জাভাস্ক্রিপ্ট ধরনের অনুরূপ, কিন্তু অভিন্ন নয়. এই পৃষ্ঠার আক্ষরিক বিভাগে বর্ণিত। - বিন্যাস প্যাটার্ন । ডেটা উৎস তার কিছু বা সমস্ত কলামের জন্য বিন্যাস নিদর্শন সংজ্ঞায়িত করতে পারে। আপনি একটি বিন্যাস ধারা অন্তর্ভুক্ত করে এই প্যাটার্নটি ওভাররাইড করতে পারেন।
এই বিভাগ জুড়ে, প্রশ্নের সমস্ত উদাহরণ নিম্নলিখিত সারণীতে উল্লেখ করে। কলাম হেডার হল কলাম শনাক্তকারী।
namestring |
deptstring |
lunchTimetimeofday |
salary number |
hireDatedate |
agenumber |
isSeniorboolean |
seniorityStartTimedatetime |
---|---|---|---|---|---|---|---|
John | Eng | 12:00:00 | 1000 | 2005-03-19 | 35 | true | 2007-12-02 15:56:00 |
Dave | Eng | 12:00:00 | 500 | 2006-04-19 | 27 | false | null |
Sally | Eng | 13:00:00 | 600 | 2005-10-10 | 30 | false | null |
Ben | Sales | 12:00:00 | 400 | 2002-10-10 | 32 | true | 2005-03-09 12:30:00 |
Dana | Sales | 12:00:00 | 350 | 2004-09-08 | 25 | false | null |
Mike | Marketing | 13:00:00 | 800 | 2005-01-10 | 24 | true | 2007-12-30 14:40:00 |
ভাষার ধারা
ক্যোয়ারী ভাষার সিনট্যাক্স নিম্নলিখিত ধারাগুলি নিয়ে গঠিত। প্রতিটি ক্লজ এক বা দুটি কীওয়ার্ড দিয়ে শুরু হয়। সমস্ত ধারা ঐচ্ছিক. ক্লজগুলি শূন্যস্থান দ্বারা পৃথক করা হয়। ধারাগুলির ক্রম নিম্নরূপ হতে হবে:
ধারা | ব্যবহার |
---|---|
select | কোন কলামগুলি ফেরত দিতে হবে তা নির্বাচন করে এবং কোন ক্রমে। বাদ দেওয়া হলে, টেবিলের সমস্ত কলাম তাদের ডিফল্ট ক্রমে ফেরত দেওয়া হয়। |
where | শুধুমাত্র একটি শর্তের সাথে মেলে এমন সারিগুলি দেখায়৷ বাদ দেওয়া হলে, সমস্ত সারি ফেরত দেওয়া হয়। |
group by | সারি জুড়ে মান একত্রিত করে। |
pivot | কলামের স্বতন্ত্র মানগুলিকে নতুন কলামে রূপান্তরিত করে। |
order by | কলামে মান অনুসারে সারি সাজায়। |
limit | প্রত্যাবর্তিত সারির সংখ্যা সীমিত করে। |
offset | প্রথম সারিগুলির একটি প্রদত্ত সংখ্যা এড়িয়ে যায়। |
label | কলাম লেবেল সেট করে। |
format | প্রদত্ত ফরম্যাটিং প্যাটার্ন ব্যবহার করে নির্দিষ্ট কলামে মানগুলি ফর্ম্যাট করে। |
options | অতিরিক্ত বিকল্প সেট করে। |
from | from the clauseটি ভাষা থেকে বাদ দেওয়া হয়েছে। |
নির্বাচন করুন
select
ক্লজটি রিটার্ন করার জন্য কলাম এবং তাদের অর্ডার নির্দিষ্ট করতে ব্যবহৃত হয়। যদি এই ধারাটি নির্দিষ্ট করা না থাকে, বা যদি select *
ব্যবহার করা হয়, তবে ডেটা উত্স টেবিলের সমস্ত কলাম তাদের আসল ক্রমে ফিরিয়ে দেওয়া হয়। কলাম শনাক্তকারী দ্বারা উল্লেখ করা হয় (লেবেল দ্বারা নয়)। উদাহরণস্বরূপ, একটি Google স্প্রেডশীটে, কলাম শনাক্তকারী হল এক বা দুটি অক্ষরের কলাম অক্ষর (A, B, C, ...)।
একটি select
ধারার আইটেমগুলি কলাম শনাক্তকারী, বা একত্রীকরণ ফাংশনের আউটপুট, স্কেলার ফাংশন বা অপারেটর হতে পারে।
উদাহরণ:
select *
select dept, salary
select max(salary)
নিম্নলিখিত উদাহরণে, ব্যাক-কোটগুলি কলাম আইডি উল্লেখ করতে ব্যবহৃত হয় যাতে স্পেস রয়েছে (ইমেল ঠিকানা) বা সংরক্ষিত শব্দ (তারিখ):
select `email address`, name, `date`
উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো হচ্ছে:
select lunchTime, name
নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:
lunchTime | name |
---|---|
12:00:00 | John |
12:00:00 | Dave |
13:00:00 | Sally |
12:00:00 | Ben |
12:00:00 | Dana |
13:00:00 | Mike |
কোথায়
where
ক্লজটি শুধুমাত্র একটি নির্দিষ্ট শর্তের সাথে মেলে এমন সারি ফেরাতে ব্যবহৃত হয়।
সহজ তুলনা অপারেটর হল <=, <, >, >=, =, !=, <>
। উভয় তুলনা অপারেটর != <>
মানে সমান নয়। স্ট্রিংগুলি অভিধানিক মান দ্বারা তুলনা করা হয়। মনে রাখবেন যে সমতা =
দ্বারা নির্দেশিত হয়, না ==
বেশিরভাগ কম্পিউটার ভাষার মতো। null
এর সাথে তুলনা করা হয় is null
বা is not null
ব্যবহার করে।
আপনি লজিক্যাল অপারেটর and
, or
, এবং not
ব্যবহার করে একাধিক শর্তে যোগ দিতে পারেন৷ সুস্পষ্ট অগ্রাধিকার সংজ্ঞায়িত করতে বন্ধনী ব্যবহার করা যেতে পারে।
যেখানে ক্লজ আরও কিছু জটিল স্ট্রিং তুলনা অপারেটরকে সমর্থন করে। এই অপারেটররা আর্গুমেন্ট হিসাবে দুটি স্ট্রিং নেয়; যে কোনো নন-স্ট্রিং আর্গুমেন্ট (উদাহরণস্বরূপ, তারিখ বা সংখ্যা) তুলনা করার আগে স্ট্রিং-এ রূপান্তরিত হবে। স্ট্রিং ম্যাচিং কেস সংবেদনশীল (আপনি এটিকে ঘিরে কাজ করতে upper()
বা lower()
স্কেলার ফাংশন ব্যবহার করতে পারেন)।
-
contains
- একটি সাবস্ট্রিং মিল। whole-এর মধ্যে অংশcontains
সত্য যদি অংশ সমগ্রের মধ্যে কোথাও থাকে। উদাহরণ:where name contains 'John'
সাথে 'John', 'John Adams', 'Long John Silver' আছে কিন্তু 'john Adams' এর সাথে মেলে না। -
starts with
- একটি উপসর্গ মিল। মানের শুরুতে উপসর্গ থাকলে মানটি উপসর্গstarts with
হয় সত্য। উদাহরণ:where dept starts with 'engineering'
'ইঞ্জিনিয়ারিং' এবং 'ইঞ্জিনিয়ারিং ম্যানেজার' এর সাথে মেলে।where dept starts with 'e'
'ইঞ্জিনিয়ারিং', 'ইং' এবং 'ই'-এর সাথে মিলে যায়। -
ends with
- একটি প্রত্যয় মিল। প্রত্যয়ends with
মান শেষ হয় সত্য যদি প্রত্যয় মানের শেষে থাকে। উদাহরণ:where role ends with 'y'
সেখানে 'কাউবয়', 'বয়' এবং 'y' মেলে। -
matches
- A (preg) রেগুলার এক্সপ্রেশন ম্যাচ। খড়েরmatches
সুই সত্য যদি সুচের রেগুলার এক্সপ্রেশন খড়ের গাদা মেলে। উদাহরণ:where country matches '.*ia'
ভারত এবং নাইজেরিয়ার সাথে মেলে, কিন্তু ইন্ডিয়ানা নয়। মনে রাখবেন যে এটি একটি বিশ্বব্যাপী অনুসন্ধান নয়, তাইwhere country matches 'an'
'কানাডা'র সাথে মিলবে না। -
like
- একটি টেক্সট অনুসন্ধান যা দুটি ওয়াইল্ডকার্ড সমর্থন করে: %, যেটি যেকোনো ধরনের শূন্য বা তার বেশি অক্ষরের সাথে মেলে এবং _ (আন্ডারস্কোর), যা যেকোনো একটি অক্ষরের সাথে মেলে। এটি এসকিউএল লাইক অপারেটরের অনুরূপ। উদাহরণ:where name like fre%
'fre', 'fred', এবং 'freddy'-এর সাথে মেলে।
উদাহরণ:
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
নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:
name |
---|
John |
Mike |
দ্বারা গ্রুপ
ধারা 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 | avg-salary | count-age |
---|---|---|
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
নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:
Eng sum-salary | Marketing sum-salary | Sales sum-salary |
---|---|---|
2100 | 800 | 750 |
এর কারণ হল 2100 হল Eng ডিপার্টমেন্টের বেতনের সমষ্টি, মার্কেটিং ডিপার্টমেন্টের জন্য 800 ইত্যাদি।
group by
pivot
একসাথে ব্যবহার করা আরও বেশি কার্যকর হতে পারে, কারণ এটি একটি টেবিল তৈরি করে যেখানে প্রতিটি কক্ষ প্রাসঙ্গিক সারি এবং প্রাসঙ্গিক কলামের একত্রিতকরণের ফলাফল ধারণ করে। উদাহরণস্বরূপ, উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো হচ্ছে:
select dept, sum(salary) group by dept pivot lunchTime
নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:
dept | 12:00:00 sum-salary | 13:00:00 sum-salary |
---|---|---|
Eng | 1500 | 600 |
Marketing | null | 800 |
Sales | 750 | null |
এছাড়াও আপনি এই টেবিলটিকে "উল্টাতে" পারেন, কলাম এবং সারি পরিবর্তন করে, pivot
কলাম এবং কলাম group by
মধ্যে স্যুইচ করে৷ উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো হচ্ছে:
select lunchTime, sum(salary) group by lunchTime pivot dept
নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:
lunchTime | Eng sum-salary | Marketing sum-salary | Sales sum-salary |
---|---|---|---|
12:00:00 | 1500 | null | 750 |
13:00:00 | 600 | 800 | null |
আপনি pivot
ক্লজে একাধিক কলাম ব্যবহার করতে পারেন। এই ধরনের ক্ষেত্রে রেসপন্স টেবিলের কলামগুলি মূল টেবিলে বিদ্যমান কলামের মানগুলির সমস্ত অনন্য সমন্বয় দ্বারা গঠিত। উদাহরণস্বরূপ, উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো:
select sum(salary) pivot dept, lunchTime
নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:
Eng,12:00:00 sum-salary | Eng,13:00:00 sum-salary | Marketing,13:00:00 sum-salary | Sales,12:00:00 sum-salary |
---|---|---|---|
1500 | 600 | 800 | 750 |
মনে রাখবেন যে শুধুমাত্র মূল সারণীতে প্রদর্শিত সংমিশ্রণগুলি প্রতিক্রিয়া সারণীতে কলাম দেওয়া হয়েছে৷ এই কারণেই মার্কেটিং,12:00:00 বা বিক্রয়,13:00:00 এর জন্য কোন কলাম নেই।
একাধিক সমষ্টি ব্যবহার করাও সম্ভব। উদাহরণস্বরূপ, উদাহরণ টেবিলে নিম্নলিখিত ক্যোয়ারী চালানো:
select sum(salary), max(lunchTime) pivot dept
নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:
Eng sum-salary | Marketing sum-salary | Sales sum-salary | Eng max-lunchTime | Marketing max-lunchTime | Sales max-lunchTime |
---|---|---|---|---|---|
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 sum-salary, Marketing sum-salary এবং Sales sum-salary।
আপনি একত্রিত কলাম লেবেল করতে পারেন. যদি label
ক্লজে কোনো লেবেল নির্দিষ্ট করা না থাকে, তাহলে পিভটিংয়ের ফলে উৎপন্ন একটি কলামের লেবেলটি পিভট কলামের মানগুলির তালিকা, একত্রিতকরণের ধরন (মিনিট, সর্বোচ্চ, যোগফল, ...) এবং একত্রিত কলামের লেবেল। যেমন "Eng,12:00:00 sum বেতন"। 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
ধারাটি এক বা একাধিক কলামে ঘরের জন্য একটি বিন্যাসিত মান নির্দিষ্ট করতে ব্যবহৃত হয়। প্রত্যাবর্তিত ডেটাতে একটি ফরম্যাট করা কলামে প্রতিটি কক্ষের জন্য একটি প্রকৃত মান এবং একটি ফর্ম্যাট করা মান উভয়ই অন্তর্ভুক্ত করা উচিত। অনেক ভিজ্যুয়ালাইজেশন গণনার জন্য বিন্যাসহীন মান ব্যবহার করে, কিন্তু প্রদর্শনের জন্য বিন্যাসিত মান। আপনি এই ধারায় যে নিদর্শনগুলি নির্দিষ্ট করেছেন তা সাধারণত সংশ্লিষ্ট কলামগুলির প্যাটার্ন সম্পত্তিতে ফেরত দেওয়া হয়।
প্যাটার্ন সিনট্যাক্স:
-
number
,date
,timeofday
,datetime
- ICU দ্বারা সংজ্ঞায়িত তারিখ এবং সংখ্যা নিদর্শন।
-
boolean
- প্যাটার্ন হল ' মান-যদি-সত্য : মান-যদি-মিথ্যা ' বিন্যাসে একটি
string
।
উদাহরণ:
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 ভিজ্যুয়ালাইজেশন API ক্যোয়ারী ভাষা দ্বারা সংজ্ঞায়িত করা হয়েছে:
একত্রিতকরণ ফাংশন
একত্রিতকরণ ফাংশনগুলিকে একটি একক কলাম শনাক্তকারী পাস করা হয় এবং প্রতিটি গোষ্ঠীর সমস্ত মান জুড়ে একটি ক্রিয়া সম্পাদন করে (গ্রুপগুলিকে 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.
স্কেলার ফাংশন
স্কেলার ফাংশন অন্য মান তৈরি করতে শূন্য বা তার বেশি প্যারামিটারের উপর কাজ করে। স্কেলার ফাংশন যে কোনো এক্সপ্রেশন পাস করা যেতে পারে যা উপযুক্ত ধরনের প্যারামিটারে মূল্যায়ন করে। মনে রাখবেন যে এই প্রকারগুলি হল এই নথির লিটারাল বিভাগে সংজ্ঞায়িত প্রকার, যা একইভাবে নাম দেওয়া জাভাস্ক্রিপ্ট অবজেক্টের থেকে কিছুটা আলাদা হতে পারে।
মনে রাখবেন যে কলামের নামটি একটি স্কেলার ফাংশন দিয়ে মোড়ানোর মাধ্যমে পরিবর্তন করা হবে।
স্কেলার ফাংশনগুলি একটি প্যারামিটার হিসাবে নিতে পারে যা একটি একক মানকে মূল্যায়ন করে:
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() | GMT টাইমজোনে বর্তমান পরামিতি: কোনোটিই নয় রিটার্ন টাইপ: 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 s এর গুণফল প্রদান করে। | দুই number এস | number |
/ | দুটি number s এর ভাগফল প্রদান করে। শূন্য দ্বারা বিভাজন শূন্য রিটার্ন. | দুই number এস | number |
ভাষার উপাদান
আক্ষরিক
লিটারেল হল তুলনা বা অ্যাসাইনমেন্টের জন্য ব্যবহৃত মান। আক্ষরিক string
s, সংখ্যা, বুলিয়ান মান, বা বিভিন্ন তারিখ/সময় প্রকার হতে পারে। এখানে ক্যোয়ারী সিনট্যাক্সে ব্যবহৃত আক্ষরিক কিছু উদাহরণ রয়েছে:
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
বিন্যাসে একটিstring
আক্ষরিক দ্বারা অনুসরণ করে কীওয়ার্ডdate
ব্যবহার করুন। উদাহরণ:date "2008-03-18"
। -
timeofday
-
HH:mm:ss[.SSS]
ফরম্যাটে একটিstring
লিটারেল অনুসরণ করেtimeofday
কীওয়ার্ডটি ব্যবহার করুন উদাহরণ: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_]), অথবা
- একটি অঙ্ক দিয়ে শুরু হয়
এটি অবশ্যই ব্যাক-কোট দ্বারা বেষ্টিত হতে হবে (একক উদ্ধৃতি নয়)।
অন্যথায়, আপনার শনাক্তকারীকে উদ্ধৃত করার প্রয়োজন নেই। (উল্লেখ্য যে সিনট্যাক্স দ্বারা সংজ্ঞায়িত সমস্ত কীওয়ার্ড সংরক্ষিত শব্দ নয়; তাই, উদাহরণস্বরূপ, আপনি "সর্বোচ্চ" একটি শনাক্তকারী হিসাবে ব্যবহার করতে পারেন, এটিকে ব্যাক-কোট না করেও।)
উদাহরণ: 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