HiveQL (Hive Query Language) হল Hive এর কুয়েরি ভাষা, যা SQL-এর মতো, তবে এটি Hadoop প্ল্যাটফর্মে ডেটা বিশ্লেষণ এবং প্রক্রিয়া করার জন্য ডিজাইন করা হয়েছে। HiveQL ব্যবহারকারীদের জন্য সহজ এবং পরিচিত ইন্টারফেস প্রদান করে, যা Hadoop-এর বিশাল ক্ষমতা কাজে লাগানোর জন্য SQL-অনুরূপ কুয়েরি চালাতে সহায়তা করে।
এখানে HiveQL-এর মৌলিক কিছু ধারণা এবং কমান্ড সম্পর্কে আলোচনা করা হলো।
HiveQL-এ একটি টেবিল তৈরি করার জন্য CREATE TABLE
কমান্ড ব্যবহার করা হয়। Hive SQL-এ টেবিল তৈরি করতে SQL-এর মতো সিনট্যাক্স ব্যবহার করা যায়, তবে Hive এর জন্য অতিরিক্ত কিছু ফিচার রয়েছে।
উদাহরণ:
CREATE TABLE employees (
id INT,
name STRING,
salary FLOAT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
এখানে:
ROW FORMAT DELIMITED
: এটি টেবিলের ডেটার ফরম্যাট নির্দেশ করে।FIELDS TERMINATED BY ','
: এটি ডেটা ফাইলের মধ্যে প্রতিটি ফিল্ডের মধ্যে কিভাবে সেপারেটর থাকবে তা নির্ধারণ করে।STORED AS TEXTFILE
: এটি ডেটা কীভাবে স্টোর হবে তা নির্দেশ করে। এখানে টেক্সট ফাইল হিসেবে ডেটা স্টোর হবে।HiveQL-এ ডেটা ইনসার্ট করার জন্য INSERT INTO
কমান্ড ব্যবহার করা হয়। Hive ব্যবহারকারীরা টেবিলে ডেটা ইনসার্ট করার জন্য SQL-এর মতো INSERT
কমান্ড ব্যবহার করতে পারেন।
উদাহরণ:
INSERT INTO TABLE employees
VALUES (1, 'John Doe', 50000);
এখানে employees
টেবিলের মধ্যে একটি রেকর্ড ইনসার্ট করা হয়েছে।
HiveQL-এ ডেটা রিট্রিভ করার জন্য SELECT
কমান্ড ব্যবহার করা হয়। এটি SQL-এর মতো একই সিনট্যাক্সে কাজ করে।
উদাহরণ:
SELECT * FROM employees;
এই কুয়েরি employees
টেবিল থেকে সমস্ত কলাম এবং সমস্ত রেকর্ড নির্বাচন করবে।
WHERE
ক্লজ ব্যবহার করে নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করা যায়। এটি SQL-এর মতো কাজ করে।
উদাহরণ:
SELECT name, salary FROM employees WHERE salary > 40000;
এই কুয়েরি employees
টেবিল থেকে শুধুমাত্র তাদের নাম এবং বেতন নির্বাচন করবে যাদের বেতন ৪০,০০০-এর বেশি।
GROUP BY
ব্যবহার করে ডেটাকে একটি নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করা যায় এবং তারপর গ্রুপভিত্তিক কিছু অগ্রগতি করা যায়, যেমন গড় বা সর্বোচ্চ।
উদাহরণ:
SELECT department, AVG(salary) FROM employees GROUP BY department;
এই কুয়েরি employees
টেবিল থেকে প্রতিটি ডিপার্টমেন্টের গড় বেতন বের করবে।
ORDER BY
ব্যবহার করে ডেটাকে সর্ট করা যায়। এটি ASC
(ascending) বা DESC
(descending) অর্ডারে সর্ট করতে পারে।
উদাহরণ:
SELECT name, salary FROM employees ORDER BY salary DESC;
এই কুয়েরি employees
টেবিলের সকল কর্মচারীর নাম এবং বেতন বেতন অনুযায়ী অবনতির দিকে সাজাবে (দ্বিতীয় কলাম salary
এর উপর ভিত্তি করে)।
Hive-এ বড় ডেটাসেটকে আরও সহজে ম্যানেজ করতে পার্টিশনিং করা হয়। এটি ডেটাকে বিভিন্ন অংশে ভাগ করে, যাতে বড় ডেটা আরও দ্রুত প্রসেস করা যায়।
উদাহরণ:
CREATE TABLE sales (
id INT,
amount FLOAT,
date STRING
)
PARTITIONED BY (year INT, month INT);
এখানে sales
টেবিলটি year
এবং month
-এর ভিত্তিতে পার্টিশন করা হয়েছে।
HiveQL SQL-এর মতো JOIN অপারেটর সমর্থন করে, যা একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করতে সাহায্য করে।
উদাহরণ:
SELECT e.name, d.department_name
FROM employees e
JOIN departments d
ON e.department_id = d.department_id;
এই কুয়েরি employees
এবং departments
টেবিলের মধ্যে যোগসূত্র তৈরি করবে, যেখানে department_id
এর মাধ্যমে দুটি টেবিল সংযুক্ত হবে।
যদি কোনো টেবিল মুছে ফেলতে চান, তাহলে DROP TABLE
কমান্ড ব্যবহার করা হয়।
উদাহরণ:
DROP TABLE employees;
এই কুয়েরি employees
টেবিলটি মুছে ফেলবে।
ORC
, Parquet
, AVRO
, TEXTFILE
সমর্থন করে।HiveQL হল Hive-এ SQL-এর মতো কুয়েরি ভাষা যা ব্যবহারকারীদের Hadoop প্ল্যাটফর্মে ডেটা বিশ্লেষণ এবং প্রক্রিয়া করতে সহজ করে তোলে। HiveQL-এর মাধ্যমে ব্যবহারকারীরা SQL-অনুরূপ সিনট্যাক্স ব্যবহার করে Hive-এ ডেটা পরিচালনা করতে পারেন এবং বৃহৎ ডেটাসেট দ্রুত এবং কার্যকরভাবে বিশ্লেষণ করতে পারেন।
HiveQL হল Hive এর কুয়েরি ভাষা যা SQL-এর মতোই ডিজাইন করা হয়েছে। এটি ব্যবহার করে ডেটা বিশ্লেষণ এবং পরিচালনা করা সম্ভব, কিন্তু কিছু পার্থক্য রয়েছে, বিশেষত Hadoop এবং MapReduce-এর জন্য উপযোগী হওয়ায়। HiveQL-এর মাধ্যমে আপনি Hive ডেটাবেসে কুয়েরি চালাতে পারেন, ডেটা ইনসার্ট, আপডেট, ডিলিট এবং সিলেক্ট করতে পারেন।
এখানে HiveQL-এর মৌলিক সিঙ্কট্যাক্সের কিছু মূল কমান্ড এবং ব্যবহারের উদাহরণ দেওয়া হলো।
Hive ডেটাবেস তৈরি করার জন্য CREATE DATABASE
কমান্ড ব্যবহার করা হয়।
CREATE DATABASE database_name;
উদাহরণ:
CREATE DATABASE employee_db;
নির্দিষ্ট একটি ডেটাবেস নির্বাচন করতে USE
কমান্ড ব্যবহার করা হয়।
USE database_name;
উদাহরণ:
USE employee_db;
নতুন একটি টেবিল তৈরি করতে CREATE TABLE
কমান্ড ব্যবহার করা হয়। Hive টেবিলের মধ্যে ডেটা সঞ্চয় করার জন্য হাইভ স্কিমা ব্যবহার করা হয়।
CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
উদাহরণ:
CREATE TABLE employee (id INT, name STRING, salary FLOAT);
কোনো টেবিলের স্কিমা দেখতে DESCRIBE
কমান্ড ব্যবহার করা হয়।
DESCRIBE table_name;
উদাহরণ:
DESCRIBE employee;
ডেটা সিলেক্ট করতে SELECT
কমান্ড ব্যবহার করা হয়। এটি SQL-এর মতোই কাজ করে।
SELECT column1, column2 FROM table_name;
উদাহরণ:
SELECT name, salary FROM employee;
টেবিলে নতুন ডেটা ইনসার্ট করতে INSERT INTO
কমান্ড ব্যবহার করা হয়।
INSERT INTO TABLE table_name VALUES (value1, value2, ...);
উদাহরণ:
INSERT INTO TABLE employee VALUES (1, 'John Doe', 50000);
HiveQL এ ডেটা আপডেট করার জন্য UPDATE
কমান্ড ব্যবহার করা হয়, তবে এটি Hive এর পুরনো সংস্করণে সীমিত ছিল। তবে, Hive 0.14 সংস্করণ থেকে ACID ট্রানজেকশনের সমর্থন যোগ করা হয়েছে, যার মাধ্যমে আপডেট করা সম্ভব।
UPDATE table_name SET column1 = value1 WHERE condition;
উদাহরণ:
UPDATE employee SET salary = 60000 WHERE id = 1;
কোনো টেবিল থেকে ডেটা মুছে ফেলতে DELETE
কমান্ড ব্যবহার করা হয়।
DELETE FROM table_name WHERE condition;
উদাহরণ:
DELETE FROM employee WHERE id = 1;
টেবিল মুছে ফেলতে DROP TABLE
কমান্ড ব্যবহার করা হয়।
DROP TABLE table_name;
উদাহরণ:
DROP TABLE employee;
একটি টেবিলের স্কিমা পরিবর্তন করতে ALTER TABLE
কমান্ড ব্যবহার করা হয়। যেমন, নতুন কলাম যোগ করা বা পুরনো কলাম মুছে ফেলা।
ALTER TABLE table_name ADD COLUMNS (column_name datatype);
উদাহরণ:
ALTER TABLE employee ADD COLUMNS (age INT);
Hive ডেটাবেসে পার্টিশনিং একটি গুরুত্বপূর্ণ ফিচার। এটি ডেটাকে দ্রুত বিশ্লেষণ করতে সহায়তা করে।
CREATE TABLE table_name (column1 datatype, column2 datatype, ...) PARTITIONED BY (partition_column datatype);
উদাহরণ:
CREATE TABLE employee (id INT, name STRING, salary FLOAT) PARTITIONED BY (year INT);
একটি নির্দিষ্ট কলামের ভিত্তিতে ডেটাকে গ্রুপ করতে GROUP BY
ব্যবহার করা হয়।
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
উদাহরণ:
SELECT year, COUNT(*) FROM employee GROUP BY year;
HiveQL-এ JOIN কমান্ড ব্যবহার করা হয়, তবে এটি সাধারণ SQL-এর মতো কার্যকরী নয়। Hive সাধারণত MapReduce এবং Tez ব্যবহারের মাধ্যমে JOIN অপারেশন সম্পাদন করে, যা মাঝে মাঝে ধীর হতে পারে।
SELECT * FROM table1 JOIN table2 ON table1.column = table2.column;
উদাহরণ:
SELECT employee.name, department.name FROM employee JOIN department ON employee.dept_id = department.id;
HiveQL মূলত SQL-এর মতো একটি কুয়েরি ভাষা, যা Hadoop এর ডেটাবেস কুয়েরি এবং বিশ্লেষণের জন্য ব্যবহৃত হয়। HiveQL-এর মাধ্যমে আপনি টেবিল তৈরি, ডেটা সিলেক্ট, ইনসার্ট, আপডেট, ডিলিট এবং গ্রুপিং করতে পারেন। এই মৌলিক সিঙ্কট্যাক্সের মাধ্যমে আপনি Hive-এর শক্তিশালী বিশ্লেষণ ক্ষমতাকে কাজে লাগাতে পারবেন।
Apache Hive একটি SQL-অনুরূপ কুয়েরি ভাষা HiveQL ব্যবহার করে ডেটাবেস অপারেশন সম্পাদন করে। Hive সাধারণত বিশাল ডেটাসেটের জন্য বিশ্লেষণ এবং কুয়েরি পরিচালনা করতে ব্যবহৃত হয়, তবে এটি SELECT, INSERT, UPDATE, এবং DELETE কুয়েরি চালানোর জন্য SQL-এর মতো কার্যকরী কমান্ডও প্রদান করে।
নিম্নে Hive-এর SELECT, INSERT, UPDATE, এবং DELETE কুয়েরি ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হলো।
SELECT কুয়েরি HiveQL-এর অন্যতম গুরুত্বপূর্ণ অংশ, যা ডেটাবেস থেকে ডেটা এক্সট্রাক্ট বা পুনরুদ্ধারের জন্য ব্যবহৃত হয়।
SELECT column1, column2, ...
FROM table_name
WHERE condition;
এখানে:
SELECT name, age
FROM employees
WHERE age > 30;
এটি employees টেবিল থেকে name এবং age কলাম নির্বাচন করবে, যেখানে age 30 এর বেশি।
DISTINCT: যদি আপনি ডুপ্লিকেট রেকর্ড বাদ দিতে চান, তবে DISTINCT
ব্যবহার করতে পারেন।
SELECT DISTINCT department FROM employees;
LIMIT: শুধুমাত্র একটি নির্দিষ্ট সংখ্যক রেকর্ড ফেরত দেওয়ার জন্য LIMIT
ব্যবহার করতে পারেন।
SELECT * FROM employees LIMIT 10;
Hive-এ INSERT কুয়েরি ব্যবহার করে ডেটাবেসে নতুন রেকর্ড যুক্ত করা হয়। Hive SQL এর INSERT INTO বা INSERT OVERWRITE কুয়েরি ব্যবহার করে ডেটা যোগ করতে পারেন।
INSERT INTO table_name
VALUES (value1, value2, ...);
এটি টেবিলের পুরানো ডেটা সম্পূর্ণরূপে প্রতিস্থাপন করে। সাধারণত এটি পছন্দ করা হয় যখন টেবিলের সব ডেটা আবার ইনসার্ট করা হয়।
INSERT OVERWRITE TABLE table_name
VALUES (value1, value2, ...);
INSERT INTO employees
VALUES ('John', 35, 'HR');
এটি employees টেবিলে একটি নতুন রেকর্ড (যেখানে নাম "John", বয়স 35 এবং বিভাগ "HR") ইনসার্ট করবে।
আপনি একটি টেবিল থেকে ডেটা নির্বাচন করে অন্য একটি টেবিলে ইনসার্ট করতে পারেন:
INSERT INTO employees
SELECT name, age FROM candidates WHERE status = 'Hired';
Hive মূলত একটি Batch Processing টুল এবং এটি UPDATE অপারেশন সমর্থন করে না। Hive-এর ACID টেবিল (যেটি Hive 0.14 সংস্করণ থেকে সমর্থিত) ব্যবহার করলে UPDATE কুয়েরি করা সম্ভব। তবে এটি MapReduce ব্যবহার করে এবং ছোট-আকারের ডেটাবেসে কার্যকরী নয়।
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
UPDATE employees
SET age = 36
WHERE name = 'John';
এটি employees টেবিলে "John" নামের ব্যক্তির বয়স পরিবর্তন করে 36 করে দেবে।
Hive সাধারণত DELETE কুয়েরি সমর্থন করে না, তবে ACID টেবিল ব্যবহার করলে আপনি DELETE কুয়েরি চালাতে পারবেন। Hive 0.14 সংস্করণের পর ACID সমর্থন যোগ করা হয়েছে, তবে এটি small data sets এ বেশি কার্যকরী এবং large datasets এ সীমাবদ্ধ।
DELETE FROM table_name
WHERE condition;
DELETE FROM employees
WHERE age < 25;
এটি employees টেবিল থেকে বয়স 25 এর কম এমন সমস্ত রেকর্ড মুছে ফেলবে।
Hive মূলত বড় ডেটাসেটের জন্য ডিজাইন করা হয়েছে এবং এটি Batch processing সমর্থন করে, তাই সাধারণ UPDATE এবং DELETE কুয়েরি ব্যবহারের ক্ষেত্রে কিছু সীমাবদ্ধতা রয়েছে। ACID টেবিল ব্যবহারের মাধ্যমে Hive SQL-এ কিছু কার্যকারিতা যোগ করা হলেও, ছোট ডেটাসেটের জন্য Hive-এর এই ধরনের অপারেশনগুলো অপেক্ষাকৃত ধীর হতে পারে।
Apache Hive একটি SQL-অনুরূপ কুয়েরি ভাষা HiveQL ব্যবহার করে ডেটাবেস অপারেশন সম্পাদন করে। SELECT কুয়েরি দ্বারা ডেটা নির্বাচন, INSERT কুয়েরি দিয়ে নতুন রেকর্ড ইনসার্ট করা, এবং UPDATE ও DELETE কুয়েরি সমর্থন কেবল ACID টেবিলের জন্য উপলব্ধ। Hive সাধারণত বড় ডেটাসেটের জন্য উপযুক্ত, তবে এর মধ্যে SQL-ভিত্তিক কুয়েরি এবং Batch processing সহজে কার্যকরীভাবে পরিচালনা করা সম্ভব।
HiveQL (Hive Query Language) SQL-এর মতো একটি কুয়েরি ভাষা যা Hadoop-এর বিশাল ডেটাসেটগুলির ওপর কাজ করার জন্য ডিজাইন করা হয়েছে। HiveQL বিভিন্ন কুয়েরি অপারেটর, ক্লজ এবং ফিচার প্রদান করে যা ব্যবহারকারীদের ডেটা কুয়েরি এবং বিশ্লেষণ করতে সাহায্য করে। এই প্রবন্ধে আমরা HiveQL-এর চারটি গুরুত্বপূর্ণ ক্লজ—WHERE, GROUP BY, ORDER BY, এবং HAVING—এর ব্যবহার শিখব।
WHERE ক্লজটি ডেটা ফিল্টার করার জন্য ব্যবহার করা হয়। এটি কুয়েরির মধ্যে একটি শর্ত নির্ধারণ করে, যা পূর্ণ হলে কেবল সেই রেকর্ডগুলোকে নির্বাচন করা হয়।
ব্যবহার: WHERE ক্লজটি সাধারণত SELECT
কুয়েরির সাথে ব্যবহার করা হয়, যেখানে ডেটা কিছু নির্দিষ্ট শর্তের ভিত্তিতে ফিল্টার করা হয়।
উদাহরণ:
SELECT name, age
FROM employees
WHERE age > 30;
এখানে, employees
টেবিল থেকে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করা হবে যেখানে age
30 এর বেশি।
=
, >
, <
, >=
, <=
, <>
AND
, OR
, NOT
GROUP BY ক্লজটি ব্যবহার করা হয় ডেটাকে গ্রুপে বিভক্ত করার জন্য, যাতে একই ধরনের ডেটা একটি গ্রুপে আসে। এটি সাধারণত এগ্রিগেট ফাংশন (যেমন COUNT()
, SUM()
, AVG()
) এর সাথে ব্যবহৃত হয়, যাতে প্রতিটি গ্রুপের জন্য কোন নির্দিষ্ট গণনা করা যায়।
ব্যবহার: GROUP BY ব্যবহার করে, এক বা একাধিক কলামের ভিত্তিতে ডেটা গ্রুপ করা হয়।
উদাহরণ:
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department;
এখানে, employees
টেবিলের মধ্যে প্রতিটি department
অনুযায়ী কতজন কর্মী আছেন তা গণনা করা হবে।
ORDER BY ক্লজটি ডেটাকে একটি নির্দিষ্ট ক্রমে সাজানোর জন্য ব্যবহৃত হয়। এটি ASC (অ্যালফাবেটিক্যাল বা সংখ্যা অনুসারে বৃদ্ধি) বা DESC (অ্যালফাবেটিক্যাল বা সংখ্যা অনুসারে হ্রাস) নির্দেশ করে।
ব্যবহার: ORDER BY ক্লজটি সাধারণত SELECT
কুয়েরি শেষে ব্যবহার করা হয়, যাতে ফলাফলগুলো সঠিকভাবে সাজানো যায়।
উদাহরণ:
SELECT name, age
FROM employees
ORDER BY age DESC;
এখানে, employees
টেবিলের age
কলাম অনুযায়ী ফলাফলটি অবনমন (DESC) ক্রমে সাজানো হবে।
HAVING ক্লজটি GROUP BY ক্লজের পরে ব্যবহৃত হয় এবং এটি গ্রুপের ওপর শর্ত আরোপ করতে সাহায্য করে। এটি একইভাবে WHERE ক্লজের মতো কাজ করে, তবে WHERE ক্লজ শুধুমাত্র রেকর্ড স্তরের শর্ত আরোপ করতে পারে, আর HAVING ক্লজ গ্রুপ স্তরের শর্ত আরোপ করে।
ব্যবহার: HAVING ক্লজটি সাধারণত GROUP BY এর সাথে ব্যবহৃত হয়, যাতে গ্রুপের উপর কোনো শর্ত প্রয়োগ করা যায়।
উদাহরণ:
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;
এখানে, employees
টেবিলের মধ্যে শুধুমাত্র সেই department
গ্রুপগুলো নির্বাচন করা হবে যেখানে কর্মীর সংখ্যা ৫ এর বেশি।
WHERE, GROUP BY, ORDER BY, এবং HAVING ক্লজগুলি HiveQL-এ ডেটা ফিল্টার, গ্রুপ, সাজানো এবং শর্ত আরোপ করার জন্য অত্যন্ত গুরুত্বপূর্ণ। এগুলি একসাথে ব্যবহার করে আপনি বিশাল ডেটাসেটের ওপর আরও জটিল এবং কার্যকরী কুয়েরি চালাতে সক্ষম হবেন। Hive-এর সাহায্যে, আপনি Hadoop প্ল্যাটফর্মের বিশাল ক্ষমতাকে কাজে লাগিয়ে বড় ডেটাসেটগুলোর ওপর দ্রুত বিশ্লেষণ এবং কুয়েরি করতে পারবেন।
Hive, SQL-অনুরূপ কুয়েরি ভাষা HiveQL ব্যবহার করে ডেটাবেস পরিচালনা ও বিশ্লেষণ করতে সহায়তা করে। HiveQL-এ JOIN এবং Subquery দুটি গুরুত্বপূর্ণ কনসেপ্ট, যা ডেটার মধ্যে সম্পর্ক স্থাপন এবং জটিল কুয়েরি চালানোর জন্য ব্যবহৃত হয়। এই দুটি কনসেপ্ট ব্যবহার করে আপনি বিভিন্ন টেবিলের মধ্যে সম্পর্ক স্থাপন এবং আরো জটিল ডেটা বিশ্লেষণ কার্যক্রম সম্পন্ন করতে পারেন।
JOIN ব্যবহৃত হয় একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করতে, যেখানে একটি টেবিলের একটি কলাম অন্য টেবিলের কোনো কলামের সাথে সম্পর্কযুক্ত থাকে। Hive-এ JOIN বেশ কয়েকটি ধরণের হয়, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN। Hive এই JOIN অপারেটরগুলোকে Hadoop-এর MapReduce ব্যবস্থায় প্রক্রিয়া করে থাকে।
INNER JOIN ব্যবহার করা হয় দুটি টেবিলের মধ্যে মিল পাওয়া রেকর্ডগুলো বের করতে। এই JOIN শুধুমাত্র তাদের রেকর্ড গুলো দেখাবে যেখানে দুটি টেবিলের মধ্যে মিল থাকবে।
উদাহরণ:
SELECT a.id, a.name, b.salary
FROM employees a
INNER JOIN salaries b
ON a.id = b.emp_id;
এখানে employees
টেবিল এবং salaries
টেবিলের মধ্যে id
এবং emp_id
কলাম দ্বারা সম্পর্ক তৈরি করা হয়েছে। শুধুমাত্র এমন রেকর্ডগুলো রিটার্ন হবে যেখানে id
এবং emp_id
একে অপরের সাথে মিলে যাবে।
LEFT JOIN ব্যবহার করা হয় যাতে প্রথম টেবিলের সব রেকর্ড এবং মিল পাওয়া রেকর্ডগুলোকেও রিটার্ন করা হয়। যদি দ্বিতীয় টেবিলের সাথে মিল না পাওয়া যায়, তাহলে সেই কলামগুলো NULL
হিসেবে দেখানো হবে।
উদাহরণ:
SELECT a.id, a.name, b.salary
FROM employees a
LEFT JOIN salaries b
ON a.id = b.emp_id;
এখানে employees
টেবিলের সব রেকর্ড রিটার্ন হবে এবং মিল পাওয়া রেকর্ডগুলো salaries
টেবিল থেকে যুক্ত হবে। যদি কোনো মিল না পাওয়া যায়, তবে salary
কলামটি NULL
হবে।
RIGHT JOIN হল একটি বিপরীত কার্যক্রম, যেখানে দ্বিতীয় টেবিলের সব রেকর্ড রিটার্ন হয় এবং প্রথম টেবিলের সাথে মিল পাওয়া রেকর্ডগুলো দেখানো হয়।
উদাহরণ:
SELECT a.id, a.name, b.salary
FROM employees a
RIGHT JOIN salaries b
ON a.id = b.emp_id;
এখানে salaries
টেবিলের সব রেকর্ড রিটার্ন হবে এবং মিল পাওয়া রেকর্ডগুলো employees
টেবিল থেকে যুক্ত হবে।
FULL JOIN দুটি টেবিলের সব রেকর্ড রিটার্ন করে, যেখানে মিল পাওয়া রেকর্ডগুলো একত্রিত হয় এবং যেগুলো মিল পায় না, সেখানে NULL
দেখানো হয়।
উদাহরণ:
SELECT a.id, a.name, b.salary
FROM employees a
FULL JOIN salaries b
ON a.id = b.emp_id;
এখানে employees
এবং salaries
টেবিলের সব রেকর্ড দেখানো হবে। মিল না পাওয়া রেকর্ডগুলোর ক্ষেত্রে অন্য টেবিলের কলামগুলি NULL
হিসেবে প্রদর্শিত হবে।
Subquery হল এমন একটি কুয়েরি যা অন্য একটি কুয়েরির মধ্যে ব্যবহৃত হয়। Subquery-কে Nested Query বা Inner Query বলা হয়। এটি সাধারণত WHERE বা FROM ক্লজে ব্যবহৃত হয়, যা মূল কুয়েরি চলানোর আগে একটি সহায়ক কুয়েরি হিসেবে কাজ করে।
Subquery মূল কুয়েরির WHERE
ক্লজে ব্যবহার করা হয় যখন আপনি একটি শর্ত পূর্ণ করার জন্য অন্য কুয়েরি থেকে ফলাফল সংগ্রহ করতে চান।
উদাহরণ:
SELECT id, name
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
এখানে, প্রথম কুয়েরিটি employees
টেবিলের সেই সকল রেকর্ড নির্বাচন করবে, যাদের salary
গড় salary
এর চেয়ে বেশি। Subquery প্রথমে গড় salary
বের করবে, এবং মূল কুয়েরি সেই গড়ের চেয়ে বেশি salary
সহ রেকর্ডগুলো ফিরিয়ে আনবে।
Subquery কখনো কখনো FROM ক্লজেও ব্যবহার করা হয়, যেখানে এটি একটি টেম্পোরারি টেবিল হিসেবে কাজ করে এবং মূল কুয়েরিতে অংশগ্রহণ করে।
উদাহরণ:
SELECT department, MAX(salary)
FROM (
SELECT department, salary
FROM employees
) AS subquery
GROUP BY department;
এখানে, employees
টেবিল থেকে department
এবং salary
নিয়ে প্রথমে একটি Subquery তৈরি করা হয়েছে, এবং তারপর মূল কুয়েরিতে প্রতি ডিপার্টমেন্টের সর্বোচ্চ salary
বের করা হয়েছে।
Correlated Subquery একটি এমন Subquery যা মূল কুয়েরির সাথে সম্পর্কিত এবং প্রতিটি রেকর্ডের জন্য আলাদা কুয়েরি চালায়।
উদাহরণ:
SELECT id, name
FROM employees e
WHERE salary > (
SELECT AVG(salary)
FROM employees
WHERE department = e.department
);
এখানে, প্রতিটি employees
টেবিলের রেকর্ডের জন্য Subquery চলবে এবং তার বিভাগের গড় salary
তুলনা করবে।
Hive-এ JOIN এবং Subquery এর ব্যবহারে আপনি বিভিন্ন টেবিলের মধ্যে সম্পর্ক স্থাপন করতে এবং জটিল ডেটা বিশ্লেষণ কার্যক্রম পরিচালনা করতে পারেন। JOIN আপনাকে একাধিক টেবিলের রেকর্ড সংযুক্ত করতে সাহায্য করে, যেখানে আপনি মিল পাওয়া বা না পাওয়া রেকর্ডগুলো দেখতে পারেন। অন্যদিকে, Subquery একটি কুয়েরির ভিতরে অন্য কুয়েরি ব্যবহার করে ডেটার আরও গভীরে বিশ্লেষণ করতে সহায়তা করে। HiveQL-এ এই দুটি কনসেপ্টের ব্যবহার বড় ডেটাসেটের উপর কার্যকরী এবং জটিল কুয়েরি তৈরি করতে সক্ষম।
Read more