HiveQL (Hive Query Language) হল Hive এর কুয়েরি ভাষা, যা SQL-এর মতো, তবে এটি Hadoop প্ল্যাটফর্মে ডেটা বিশ্লেষণ এবং প্রক্রিয়া করার জন্য ডিজাইন করা হয়েছে। HiveQL ব্যবহারকারীদের জন্য সহজ এবং পরিচিত ইন্টারফেস প্রদান করে, যা Hadoop-এর বিশাল ক্ষমতা কাজে লাগানোর জন্য SQL-অনুরূপ কুয়েরি চালাতে সহায়তা করে।
এখানে HiveQL-এর মৌলিক কিছু ধারণা এবং কমান্ড সম্পর্কে আলোচনা করা হলো।
HiveQL-এর মৌলিক কনসেপ্ট
১. টেবিল তৈরি (CREATE TABLE)
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: এটি ডেটা কীভাবে স্টোর হবে তা নির্দেশ করে। এখানে টেক্সট ফাইল হিসেবে ডেটা স্টোর হবে।
২. ডেটা ইনসার্ট (INSERT INTO)
HiveQL-এ ডেটা ইনসার্ট করার জন্য INSERT INTO কমান্ড ব্যবহার করা হয়। Hive ব্যবহারকারীরা টেবিলে ডেটা ইনসার্ট করার জন্য SQL-এর মতো INSERT কমান্ড ব্যবহার করতে পারেন।
উদাহরণ:
INSERT INTO TABLE employees
VALUES (1, 'John Doe', 50000);
এখানে employees টেবিলের মধ্যে একটি রেকর্ড ইনসার্ট করা হয়েছে।
৩. সিলেক্ট কুয়েরি (SELECT)
HiveQL-এ ডেটা রিট্রিভ করার জন্য SELECT কমান্ড ব্যবহার করা হয়। এটি SQL-এর মতো একই সিনট্যাক্সে কাজ করে।
উদাহরণ:
SELECT * FROM employees;
এই কুয়েরি employees টেবিল থেকে সমস্ত কলাম এবং সমস্ত রেকর্ড নির্বাচন করবে।
৪. WHERE ক্লজ (WHERE)
WHERE ক্লজ ব্যবহার করে নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করা যায়। এটি SQL-এর মতো কাজ করে।
উদাহরণ:
SELECT name, salary FROM employees WHERE salary > 40000;
এই কুয়েরি employees টেবিল থেকে শুধুমাত্র তাদের নাম এবং বেতন নির্বাচন করবে যাদের বেতন ৪০,০০০-এর বেশি।
৫. গ্রুপ বাই (GROUP BY)
GROUP BY ব্যবহার করে ডেটাকে একটি নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করা যায় এবং তারপর গ্রুপভিত্তিক কিছু অগ্রগতি করা যায়, যেমন গড় বা সর্বোচ্চ।
উদাহরণ:
SELECT department, AVG(salary) FROM employees GROUP BY department;
এই কুয়েরি employees টেবিল থেকে প্রতিটি ডিপার্টমেন্টের গড় বেতন বের করবে।
৬. অর্ডার বাই (ORDER BY)
ORDER BY ব্যবহার করে ডেটাকে সর্ট করা যায়। এটি ASC (ascending) বা DESC (descending) অর্ডারে সর্ট করতে পারে।
উদাহরণ:
SELECT name, salary FROM employees ORDER BY salary DESC;
এই কুয়েরি employees টেবিলের সকল কর্মচারীর নাম এবং বেতন বেতন অনুযায়ী অবনতির দিকে সাজাবে (দ্বিতীয় কলাম salary এর উপর ভিত্তি করে)।
৭. পার্টিশনিং (Partitioning)
Hive-এ বড় ডেটাসেটকে আরও সহজে ম্যানেজ করতে পার্টিশনিং করা হয়। এটি ডেটাকে বিভিন্ন অংশে ভাগ করে, যাতে বড় ডেটা আরও দ্রুত প্রসেস করা যায়।
উদাহরণ:
CREATE TABLE sales (
id INT,
amount FLOAT,
date STRING
)
PARTITIONED BY (year INT, month INT);
এখানে sales টেবিলটি year এবং month-এর ভিত্তিতে পার্টিশন করা হয়েছে।
৮. জয়েন (JOIN)
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 কমান্ড ব্যবহার করা হয়।
উদাহরণ:
DROP TABLE employees;
এই কুয়েরি employees টেবিলটি মুছে ফেলবে।
HiveQL এর অন্যান্য বৈশিষ্ট্য
- ফাংশন: HiveQL বিভিন্ন ফাংশন সমর্থন করে, যেমন অগণিত গণনা এবং স্ট্রিং ফাংশন।
- ফাইল ফরম্যাট: Hive বিভিন্ন ফাইল ফরম্যাট যেমন
ORC,Parquet,AVRO,TEXTFILEসমর্থন করে। - কাস্টম ফাংশন: ব্যবহারকারীরা কাস্টম UDF (User Defined Functions) তৈরি করে Hive-এর কুয়েরি প্রক্রিয়াকে আরও উন্নত করতে পারে।
উপসংহার
HiveQL হল Hive-এ SQL-এর মতো কুয়েরি ভাষা যা ব্যবহারকারীদের Hadoop প্ল্যাটফর্মে ডেটা বিশ্লেষণ এবং প্রক্রিয়া করতে সহজ করে তোলে। HiveQL-এর মাধ্যমে ব্যবহারকারীরা SQL-অনুরূপ সিনট্যাক্স ব্যবহার করে Hive-এ ডেটা পরিচালনা করতে পারেন এবং বৃহৎ ডেটাসেট দ্রুত এবং কার্যকরভাবে বিশ্লেষণ করতে পারেন।
HiveQL হল Hive এর কুয়েরি ভাষা যা SQL-এর মতোই ডিজাইন করা হয়েছে। এটি ব্যবহার করে ডেটা বিশ্লেষণ এবং পরিচালনা করা সম্ভব, কিন্তু কিছু পার্থক্য রয়েছে, বিশেষত Hadoop এবং MapReduce-এর জন্য উপযোগী হওয়ায়। HiveQL-এর মাধ্যমে আপনি Hive ডেটাবেসে কুয়েরি চালাতে পারেন, ডেটা ইনসার্ট, আপডেট, ডিলিট এবং সিলেক্ট করতে পারেন।
এখানে HiveQL-এর মৌলিক সিঙ্কট্যাক্সের কিছু মূল কমান্ড এবং ব্যবহারের উদাহরণ দেওয়া হলো।
HiveQL-এর মৌলিক Syntax
১. CREATE DATABASE
Hive ডেটাবেস তৈরি করার জন্য CREATE DATABASE কমান্ড ব্যবহার করা হয়।
CREATE DATABASE database_name;
উদাহরণ:
CREATE DATABASE employee_db;
২. USE DATABASE
নির্দিষ্ট একটি ডেটাবেস নির্বাচন করতে USE কমান্ড ব্যবহার করা হয়।
USE database_name;
উদাহরণ:
USE employee_db;
৩. CREATE TABLE
নতুন একটি টেবিল তৈরি করতে CREATE TABLE কমান্ড ব্যবহার করা হয়। Hive টেবিলের মধ্যে ডেটা সঞ্চয় করার জন্য হাইভ স্কিমা ব্যবহার করা হয়।
CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
উদাহরণ:
CREATE TABLE employee (id INT, name STRING, salary FLOAT);
৪. DESCRIBE TABLE
কোনো টেবিলের স্কিমা দেখতে DESCRIBE কমান্ড ব্যবহার করা হয়।
DESCRIBE table_name;
উদাহরণ:
DESCRIBE employee;
৫. SELECT
ডেটা সিলেক্ট করতে SELECT কমান্ড ব্যবহার করা হয়। এটি SQL-এর মতোই কাজ করে।
SELECT column1, column2 FROM table_name;
উদাহরণ:
SELECT name, salary FROM employee;
৬. INSERT INTO
টেবিলে নতুন ডেটা ইনসার্ট করতে INSERT INTO কমান্ড ব্যবহার করা হয়।
INSERT INTO TABLE table_name VALUES (value1, value2, ...);
উদাহরণ:
INSERT INTO TABLE employee VALUES (1, 'John Doe', 50000);
৭. UPDATE
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 কমান্ড ব্যবহার করা হয়।
DELETE FROM table_name WHERE condition;
উদাহরণ:
DELETE FROM employee WHERE id = 1;
৯. DROP TABLE
টেবিল মুছে ফেলতে DROP TABLE কমান্ড ব্যবহার করা হয়।
DROP TABLE table_name;
উদাহরণ:
DROP TABLE employee;
১০. ALTER TABLE
একটি টেবিলের স্কিমা পরিবর্তন করতে ALTER TABLE কমান্ড ব্যবহার করা হয়। যেমন, নতুন কলাম যোগ করা বা পুরনো কলাম মুছে ফেলা।
ALTER TABLE table_name ADD COLUMNS (column_name datatype);
উদাহরণ:
ALTER TABLE employee ADD COLUMNS (age INT);
১১. PARTITIONING
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
একটি নির্দিষ্ট কলামের ভিত্তিতে ডেটাকে গ্রুপ করতে GROUP BY ব্যবহার করা হয়।
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
উদাহরণ:
SELECT year, COUNT(*) FROM employee GROUP BY year;
১৩. JOIN
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 কুয়েরি
SELECT কুয়েরি HiveQL-এর অন্যতম গুরুত্বপূর্ণ অংশ, যা ডেটাবেস থেকে ডেটা এক্সট্রাক্ট বা পুনরুদ্ধারের জন্য ব্যবহৃত হয়।
SELECT কুয়েরি ব্যবহার:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
এখানে:
- column1, column2, ...: ডেটাবেস থেকে যে কলামগুলো আপনি দেখতে চান।
- table_name: যে টেবিল থেকে আপনি ডেটা দেখতে চান।
- WHERE condition: যদি কোনও শর্ত থাকে, তাহলে সেই শর্ত অনুসারে ডেটা নির্বাচন করা হবে।
উদাহরণ:
SELECT name, age
FROM employees
WHERE age > 30;
এটি employees টেবিল থেকে name এবং age কলাম নির্বাচন করবে, যেখানে age 30 এর বেশি।
SELECT এর অন্যান্য বৈশিষ্ট্য:
DISTINCT: যদি আপনি ডুপ্লিকেট রেকর্ড বাদ দিতে চান, তবে
DISTINCTব্যবহার করতে পারেন।SELECT DISTINCT department FROM employees;LIMIT: শুধুমাত্র একটি নির্দিষ্ট সংখ্যক রেকর্ড ফেরত দেওয়ার জন্য
LIMITব্যবহার করতে পারেন।SELECT * FROM employees LIMIT 10;
INSERT কুয়েরি
Hive-এ INSERT কুয়েরি ব্যবহার করে ডেটাবেসে নতুন রেকর্ড যুক্ত করা হয়। Hive SQL এর INSERT INTO বা INSERT OVERWRITE কুয়েরি ব্যবহার করে ডেটা যোগ করতে পারেন।
INSERT INTO:
INSERT INTO table_name
VALUES (value1, value2, ...);
INSERT OVERWRITE:
এটি টেবিলের পুরানো ডেটা সম্পূর্ণরূপে প্রতিস্থাপন করে। সাধারণত এটি পছন্দ করা হয় যখন টেবিলের সব ডেটা আবার ইনসার্ট করা হয়।
INSERT OVERWRITE TABLE table_name
VALUES (value1, value2, ...);
উদাহরণ:
INSERT INTO employees
VALUES ('John', 35, 'HR');
এটি employees টেবিলে একটি নতুন রেকর্ড (যেখানে নাম "John", বয়স 35 এবং বিভাগ "HR") ইনসার্ট করবে।
SELECT INTO INSERT:
আপনি একটি টেবিল থেকে ডেটা নির্বাচন করে অন্য একটি টেবিলে ইনসার্ট করতে পারেন:
INSERT INTO employees
SELECT name, age FROM candidates WHERE status = 'Hired';
UPDATE কুয়েরি
Hive মূলত একটি Batch Processing টুল এবং এটি UPDATE অপারেশন সমর্থন করে না। Hive-এর ACID টেবিল (যেটি Hive 0.14 সংস্করণ থেকে সমর্থিত) ব্যবহার করলে UPDATE কুয়েরি করা সম্ভব। তবে এটি MapReduce ব্যবহার করে এবং ছোট-আকারের ডেটাবেসে কার্যকরী নয়।
UPDATE কুয়েরি ব্যবহার (ACID টেবিলের জন্য):
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
উদাহরণ:
UPDATE employees
SET age = 36
WHERE name = 'John';
এটি employees টেবিলে "John" নামের ব্যক্তির বয়স পরিবর্তন করে 36 করে দেবে।
DELETE কুয়েরি
Hive সাধারণত DELETE কুয়েরি সমর্থন করে না, তবে ACID টেবিল ব্যবহার করলে আপনি DELETE কুয়েরি চালাতে পারবেন। Hive 0.14 সংস্করণের পর ACID সমর্থন যোগ করা হয়েছে, তবে এটি small data sets এ বেশি কার্যকরী এবং large datasets এ সীমাবদ্ধ।
DELETE কুয়েরি ব্যবহার (ACID টেবিলের জন্য):
DELETE FROM table_name
WHERE condition;
উদাহরণ:
DELETE FROM employees
WHERE age < 25;
এটি employees টেবিল থেকে বয়স 25 এর কম এমন সমস্ত রেকর্ড মুছে ফেলবে।
Hive-এ DML (Data Manipulation Language) কুয়েরি সমর্থন
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 ক্লজটি ডেটা ফিল্টার করার জন্য ব্যবহার করা হয়। এটি কুয়েরির মধ্যে একটি শর্ত নির্ধারণ করে, যা পূর্ণ হলে কেবল সেই রেকর্ডগুলোকে নির্বাচন করা হয়।
ব্যবহার: WHERE ক্লজটি সাধারণত SELECT কুয়েরির সাথে ব্যবহার করা হয়, যেখানে ডেটা কিছু নির্দিষ্ট শর্তের ভিত্তিতে ফিল্টার করা হয়।
উদাহরণ:
SELECT name, age
FROM employees
WHERE age > 30;
এখানে, employees টেবিল থেকে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করা হবে যেখানে age 30 এর বেশি।
WHERE ক্লজ এর কিছু বৈশিষ্ট্য:
- তুলনা অপারেটর:
=,>,<,>=,<=,<> - লজিক্যাল অপারেটর:
AND,OR,NOT - LIKE অপারেটর: ডেটা প্যাটার্নের সাথে মেলে এমন রেকর্ড নির্বাচন করতে।
GROUP BY ক্লজ
GROUP BY ক্লজটি ব্যবহার করা হয় ডেটাকে গ্রুপে বিভক্ত করার জন্য, যাতে একই ধরনের ডেটা একটি গ্রুপে আসে। এটি সাধারণত এগ্রিগেট ফাংশন (যেমন COUNT(), SUM(), AVG()) এর সাথে ব্যবহৃত হয়, যাতে প্রতিটি গ্রুপের জন্য কোন নির্দিষ্ট গণনা করা যায়।
ব্যবহার: GROUP BY ব্যবহার করে, এক বা একাধিক কলামের ভিত্তিতে ডেটা গ্রুপ করা হয়।
উদাহরণ:
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department;
এখানে, employees টেবিলের মধ্যে প্রতিটি department অনুযায়ী কতজন কর্মী আছেন তা গণনা করা হবে।
GROUP BY এর কিছু বৈশিষ্ট্য:
- এটি শুধুমাত্র একই গ্রুপের রেকর্ডগুলো একসাথে গণনা করে।
- HAVING ক্লজ সাধারণত GROUP BY এর পরে ব্যবহৃত হয়, যখন গ্রুপের উপর শর্ত আরোপ করতে হয়।
ORDER BY ক্লজ
ORDER BY ক্লজটি ডেটাকে একটি নির্দিষ্ট ক্রমে সাজানোর জন্য ব্যবহৃত হয়। এটি ASC (অ্যালফাবেটিক্যাল বা সংখ্যা অনুসারে বৃদ্ধি) বা DESC (অ্যালফাবেটিক্যাল বা সংখ্যা অনুসারে হ্রাস) নির্দেশ করে।
ব্যবহার: ORDER BY ক্লজটি সাধারণত SELECT কুয়েরি শেষে ব্যবহার করা হয়, যাতে ফলাফলগুলো সঠিকভাবে সাজানো যায়।
উদাহরণ:
SELECT name, age
FROM employees
ORDER BY age DESC;
এখানে, employees টেবিলের age কলাম অনুযায়ী ফলাফলটি অবনমন (DESC) ক্রমে সাজানো হবে।
ORDER BY এর কিছু বৈশিষ্ট্য:
- ASC (ডিফল্ট): বৃদ্ধি ক্রমে সাজানো।
- DESC: অবনমন ক্রমে সাজানো।
HAVING ক্লজ
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 গ্রুপগুলো নির্বাচন করা হবে যেখানে কর্মীর সংখ্যা ৫ এর বেশি।
HAVING এর কিছু বৈশিষ্ট্য:
- HAVING ক্লজ GROUP BY এর পরে ব্যবহৃত হয়।
- এটি গ্রুপ স্তরের শর্ত আরোপ করতে ব্যবহৃত হয়, যেখানে WHERE সাধারণত রেকর্ড স্তরের শর্ত আরোপ করে।
উপসংহার
WHERE, GROUP BY, ORDER BY, এবং HAVING ক্লজগুলি HiveQL-এ ডেটা ফিল্টার, গ্রুপ, সাজানো এবং শর্ত আরোপ করার জন্য অত্যন্ত গুরুত্বপূর্ণ। এগুলি একসাথে ব্যবহার করে আপনি বিশাল ডেটাসেটের ওপর আরও জটিল এবং কার্যকরী কুয়েরি চালাতে সক্ষম হবেন। Hive-এর সাহায্যে, আপনি Hadoop প্ল্যাটফর্মের বিশাল ক্ষমতাকে কাজে লাগিয়ে বড় ডেটাসেটগুলোর ওপর দ্রুত বিশ্লেষণ এবং কুয়েরি করতে পারবেন।
Hive, SQL-অনুরূপ কুয়েরি ভাষা HiveQL ব্যবহার করে ডেটাবেস পরিচালনা ও বিশ্লেষণ করতে সহায়তা করে। HiveQL-এ JOIN এবং Subquery দুটি গুরুত্বপূর্ণ কনসেপ্ট, যা ডেটার মধ্যে সম্পর্ক স্থাপন এবং জটিল কুয়েরি চালানোর জন্য ব্যবহৃত হয়। এই দুটি কনসেপ্ট ব্যবহার করে আপনি বিভিন্ন টেবিলের মধ্যে সম্পর্ক স্থাপন এবং আরো জটিল ডেটা বিশ্লেষণ কার্যক্রম সম্পন্ন করতে পারেন।
JOIN এর ব্যবহার
JOIN ব্যবহৃত হয় একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করতে, যেখানে একটি টেবিলের একটি কলাম অন্য টেবিলের কোনো কলামের সাথে সম্পর্কযুক্ত থাকে। Hive-এ JOIN বেশ কয়েকটি ধরণের হয়, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN। Hive এই JOIN অপারেটরগুলোকে Hadoop-এর MapReduce ব্যবস্থায় প্রক্রিয়া করে থাকে।
১. INNER JOIN
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
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
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
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 হল এমন একটি কুয়েরি যা অন্য একটি কুয়েরির মধ্যে ব্যবহৃত হয়। Subquery-কে Nested Query বা Inner Query বলা হয়। এটি সাধারণত WHERE বা FROM ক্লজে ব্যবহৃত হয়, যা মূল কুয়েরি চলানোর আগে একটি সহায়ক কুয়েরি হিসেবে কাজ করে।
১. Subquery ব্যবহার WHERE ক্লজে
Subquery মূল কুয়েরির WHERE ক্লজে ব্যবহার করা হয় যখন আপনি একটি শর্ত পূর্ণ করার জন্য অন্য কুয়েরি থেকে ফলাফল সংগ্রহ করতে চান।
উদাহরণ:
SELECT id, name
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
এখানে, প্রথম কুয়েরিটি employees টেবিলের সেই সকল রেকর্ড নির্বাচন করবে, যাদের salary গড় salary এর চেয়ে বেশি। Subquery প্রথমে গড় salary বের করবে, এবং মূল কুয়েরি সেই গড়ের চেয়ে বেশি salary সহ রেকর্ডগুলো ফিরিয়ে আনবে।
২. Subquery ব্যবহার FROM ক্লজে
Subquery কখনো কখনো FROM ক্লজেও ব্যবহার করা হয়, যেখানে এটি একটি টেম্পোরারি টেবিল হিসেবে কাজ করে এবং মূল কুয়েরিতে অংশগ্রহণ করে।
উদাহরণ:
SELECT department, MAX(salary)
FROM (
SELECT department, salary
FROM employees
) AS subquery
GROUP BY department;
এখানে, employees টেবিল থেকে department এবং salary নিয়ে প্রথমে একটি Subquery তৈরি করা হয়েছে, এবং তারপর মূল কুয়েরিতে প্রতি ডিপার্টমেন্টের সর্বোচ্চ salary বের করা হয়েছে।
৩. Correlated Subquery
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