Spark SQL তে Subqueries এবং Complex Queries ব্যবহার করে ডেটা বিশ্লেষণকে আরও শক্তিশালী ও নমনীয় করা যায়। Subqueries হল SQL কোয়ারির মধ্যে থাকা একটি কোয়ারি যা অন্য একটি কোয়ারির মধ্যে লেখা হয়, এবং Complex Queries হল একাধিক SQL অপারেশন দিয়ে তৈরি জটিল কোয়ারি, যেগুলো একাধিক টেবিল বা ডেটাসেটের ওপর কার্যকরী হয়।
এখানে, আমরা Spark SQL-এ Subqueries এবং Complex Queries ব্যবহার করার পদ্ধতিগুলো দেখে নেব।
Subqueries
Subquery বা Nested Query হল একটি কোয়ারি যা অন্য একটি কোয়ারির মধ্যে থাকে। Subqueries সাধারণত WHERE, FROM, বা SELECT ক্লজের মধ্যে ব্যবহার করা হয়, এবং এটি একটি নির্দিষ্ট শর্ত বা মান নির্ধারণে সহায়ক।
Subquery এর উদাহরণ
WHERE ক্লজে Subquery
ধরুন, আমাদের কাছে দুটি টেবিল আছে, employees এবং departments। এখন, আমরা এমন কর্মচারীদের নাম বের করতে চাই যারা এমন একটি বিভাগে কাজ করেন যেখানে বাজেট ৫০০০০ ডলারের বেশি।
SELECT name FROM employees WHERE department_id IN ( SELECT department_id FROM departments WHERE budget > 50000 )এখানে, Inner Query বা Subquery প্রথমে departments টেবিল থেকে সেই বিভাগের ID বের করে যেখানে বাজেট ৫০০০০ ডলারের বেশি। তারপর, Outer Query ওই বিভাগগুলির কর্মচারীদের নাম বের করে।
SELECT ক্লজে Subquery
আমরা এমন ডিপার্টমেন্টের নাম এবং তাদের গড় বেতন বের করতে চাই যেখানে গড় বেতন ৪০০০০ ডলারের বেশি।
SELECT department_name, (SELECT AVG(salary) FROM employees WHERE department_id = departments.department_id) AS avg_salary FROM departments HAVING avg_salary > 40000এই কোয়ারিতে, Subquery প্রতিটি বিভাগে কর্মচারীদের গড় বেতন বের করে এবং পরবর্তীতে মূল কোয়ারি ওই বিভাগের গড় বেতন দেখায়।
Complex Queries
Complex Queries হল এমন SQL কোয়ারি যেগুলো একাধিক টেবিল বা ডেটাসেটের সাথে কাজ করে, একাধিক অপারেশন যেমন জয়েন (JOIN), গ্রুপিং (GROUP BY), অর্ডারিং (ORDER BY) ইত্যাদি ব্যবহার করে। Spark SQL-এ Complex Queries তৈরি করার জন্য DataFrame API বা SQL কোয়ারি ব্যবহার করা যায়।
Complex Query এর উদাহরণ
JOIN Query
ধরুন, আমাদের কাছে দুটি টেবিল আছে, employees এবং departments। আমরা কর্মচারীদের নাম এবং তাদের বিভাগের নাম একসাথে বের করতে চাই।
SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_idএখানে, employees এবং departments টেবিলকে
department_idএর মাধ্যমে JOIN করা হয়েছে।GROUP BY Query
আমরা কর্মচারীদের গড় বেতন বের করতে চাই এবং সেই অনুযায়ী বিভাগ অনুযায়ী গ্রুপ করতে চাই।
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 50000এখানে, GROUP BY ব্যবহার করে কর্মচারীদের বিভাগ অনুসারে গ্রুপ করা হয়েছে এবং তাদের গড় বেতন বের করা হয়েছে। পরে, HAVING ক্লজ ব্যবহার করে গড় বেতন ৫০,০০০ ডলারের বেশি এমন বিভাগের ফলাফল বের করা হয়েছে।
ORDER BY Query
আমরা এমন কর্মচারীদের নাম এবং বেতন বের করতে চাই যাদের বেতন ৪০০০০ ডলারের বেশি, এবং তাদের নামকে বর্ণানুক্রমিকভাবে সাজাতে চাই।
SELECT name, salary FROM employees WHERE salary > 40000 ORDER BY name ASCএখানে, ORDER BY ক্লজ ব্যবহার করে কর্মচারীদের নামকে ঊর্ধ্বমুখী (ASC) বর্ণানুক্রমিকভাবে সাজানো হয়েছে।
Subqueries এবং Complex Queries এর ব্যবহার Spark SQL তে
Spark SQL তে Subqueries এবং Complex Queries ব্যবহার করার মাধ্যমে বড় এবং জটিল ডেটাসেটের ওপর আরও শক্তিশালী এবং উন্নত বিশ্লেষণ করা সম্ভব। Spark SQL-এর সুবিধা হল যে, এটি ডিস্ট্রিবিউটেড কম্পিউটিং এর সুবিধা নেয়, ফলে এই ধরনের জটিল কোয়ারি দ্রুত এক্সিকিউট হয়।
এছাড়া, Spark SQL ব্যবহারকারীদের DataFrame API বা SQL Interface এর মাধ্যমে এই ধরনের কোয়ারি এক্সিকিউট করার সুযোগ দেয়, যেগুলো সাধারণ SQL কোয়ারির সাথে তুলনা করে আরও বেশি পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করে।
সারাংশ
Spark SQL তে Subqueries এবং Complex Queries ব্যবহার করে ডেটা বিশ্লেষণকে আরও শক্তিশালী এবং নমনীয় করা যায়। Subqueries সাধারণত SQL কোয়ারির মধ্যে নেস্টেড (nested) কোয়ারি হিসেবে ব্যবহৃত হয়, যা অন্যান্য কোয়ারির সাথে যোগাযোগ করে ডেটা প্রক্রিয়া করতে সহায়ক। Complex Queries একাধিক টেবিল এবং অপারেশন যেমন JOIN, GROUP BY, ORDER BY ইত্যাদি ব্যবহার করে আরও জটিল বিশ্লেষণ করতে সক্ষম। Spark SQL-এ এই সব ফিচারের সুবিধা নিয়ে দ্রুত এবং স্কেলেবল ডেটা প্রসেসিং করা সম্ভব।
Read more