GROUP BY এবং HAVING Clause এর ব্যবহার

Big Data and Analytics - অ্যাপাচি পিগ (Apache Pig) - Data Aggregation এবং Grouping
313

অ্যাপাচি পিগ (Apache Pig) একটি উচ্চ স্তরের ডেটা প্রক্রিয়াকরণ ভাষা, যা হাডুপ (Hadoop) ইকোসিস্টেমের অংশ হিসেবে কাজ করে এবং বৃহৎ পরিমাণের ডেটা দ্রুত প্রসেস করতে সক্ষম। পিগ ল্যাটিন (Pig Latin) ভাষায় GROUP BY এবং HAVING ক্লজ ব্যবহার করে ডেটা গ্রুপিং এবং শর্ত অনুযায়ী ফিল্টারিং করা হয়। এই দুটি ক্লজ SQL-এ ব্যবহৃত GROUP BY এবং HAVING এর মতো কাজ করে, তবে এগুলি পিগ ল্যাটিনের মাধ্যমে ডিস্ট্রিবিউটেড ডেটা প্রক্রিয়াকরণের জন্য উপযুক্ত।

এই লেখায় আমরা GROUP BY এবং HAVING ক্লজের ব্যবহার এবং তাদের কার্যকারিতা আলোচনা করব।


GROUP BY ক্লজ (GROUP BY Clause)

GROUP BY পিগ ল্যাটিনে একটি অত্যন্ত গুরুত্বপূর্ণ কমান্ড, যা ডেটাকে একটি নির্দিষ্ট ফিল্ড বা একাধিক ফিল্ডের ভিত্তিতে গ্রুপ করে। এটি সাধারণত অ্যাগ্রিগেট ফাংশন (যেমন COUNT, SUM, AVG, ইত্যাদি) এর সঙ্গে ব্যবহার করা হয়, যা গ্রুপ করা ডেটার উপর গণনা করতে সহায়তা করে।

GROUP BY এর ব্যবহার

grouped_data = GROUP data BY age;

এখানে, data টেবিলটি age ফিল্ডের উপর ভিত্তি করে গ্রুপ করা হবে। এই গ্রুপিংয়ের মাধ্যমে একই বয়সের সমস্ত রেকর্ড একত্রিত হবে। উদাহরণস্বরূপ:

{(John, 30, 5000), (Alice, 30, 6000)}
{(Bob, 40, 7000)}

এখানে, 30 বয়সের জন্য দুটি রেকর্ড থাকবে, এবং এগুলি একটি গ্রুপের মধ্যে থাকবে, অন্যদিকে 40 বয়সের জন্য একটি গ্রুপ থাকবে।

অ্যাগ্রিগেট ফাংশন ব্যবহার

GROUP BY কমান্ডটি অ্যাগ্রিগেট ফাংশনের সঙ্গে ব্যবহার করে ডেটাকে গ্রুপ করার পর তার উপর বিভিন্ন ধরনের গণনা করা যেতে পারে। উদাহরণস্বরূপ, COUNT বা SUM ফাংশন ব্যবহার করা হয়:

grouped_data = GROUP data BY age;
result = FOREACH grouped_data GENERATE group, COUNT(data);

এখানে, group হলো age এবং COUNT(data) হবে, যা প্রতিটি বয়সের জন্য রেকর্ডের সংখ্যা গণনা করবে।


HAVING ক্লজ (HAVING Clause)

HAVING ক্লজ SQL-এর একটি ফিল্টারিং কন্ডিশন যা GROUP BY এর পরে গ্রুপ করা ডেটার উপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়। পিগ ল্যাটিনে, HAVING ক্লজ ব্যবহার করে আপনি গ্রুপিংয়ের পরে শুধুমাত্র সেই গ্রুপগুলো নির্বাচন করতে পারেন যা একটি নির্দিষ্ট শর্ত পূর্ণ করে।

HAVING এর ব্যবহার

পিগে HAVING ক্লজ মূলত FILTER এর মতো কাজ করে, তবে এটি গ্রুপ করা ডেটার উপর প্রয়োগ করা হয়। উদাহরণস্বরূপ, যদি আমরা শুধুমাত্র এমন গ্রুপ চাচ্ছি যার গড় বেতন ৫০০০ এর বেশি, তবে এটি করা যেতে পারে:

grouped_data = GROUP data BY age;
average_salary = FOREACH grouped_data GENERATE group, AVG(data.salary);
filtered_data = FILTER average_salary BY $1 > 5000;

এখানে, প্রথমে আমরা age এর উপর গ্রুপ করেছি, তারপর AVG(data.salary) ফাংশন ব্যবহার করে প্রতিটি গ্রুপের গড় বেতন বের করেছি। পরে, HAVING বা FILTER ক্লজ দিয়ে আমরা শুধুমাত্র সেই গ্রুপ নির্বাচন করেছি যার গড় বেতন ৫০০০ এর বেশি।

HAVING এবং GROUP BY একসাথে ব্যবহার

grouped_data = GROUP data BY age;
average_salary = FOREACH grouped_data GENERATE group, AVG(data.salary);
filtered_data = FILTER average_salary BY $1 > 5000;

এখানে, group হল age, এবং AVG(data.salary) দ্বারা প্রতি বয়সের জন্য গড় বেতন বের করা হয়েছে। FILTER ব্যবহার করে কেবল সেই গ্রুপগুলিকে ফিল্টার করা হয়েছে যেখানে গড় বেতন ৫০০০ এর বেশি।


GROUP BY এবং HAVING এর মধ্যে পার্থক্য

ক্লজবর্ণনাকাজ
GROUP BYডেটাকে এক বা একাধিক ফিল্ডের ভিত্তিতে গ্রুপ করা হয়।ডেটাকে নির্দিষ্ট একটি বা একাধিক ফিল্ডে গ্রুপ করা হয়।
HAVINGগ্রুপ করা ডেটার উপর শর্ত প্রয়োগ করা হয়।গ্রুপ করা ডেটার উপর শর্ত (যেমন, অ্যাগ্রিগেট মানের উপর) প্রয়োগ করা হয়।

GROUP BY এবং HAVING এর একসাথে উদাহরণ

নিচে একটি পূর্ণাঙ্গ উদাহরণ দেওয়া হলো যেখানে GROUP BY এবং HAVING একসঙ্গে ব্যবহার করা হয়েছে:

-- ডেটা লোড করা
data = LOAD 'employees.txt' USING PigStorage(',') AS (name:chararray, age:int, salary:float);

-- বয়স অনুযায়ী গ্রুপিং করা
grouped_data = GROUP data BY age;

-- প্রতি বয়সের জন্য গড় বেতন বের করা
average_salary = FOREACH grouped_data GENERATE group, AVG(data.salary);

-- গড় বেতন ৫০০০ এর বেশি এমন গ্রুপ ফিল্টার করা
filtered_data = FILTER average_salary BY $1 > 5000;

-- ফলাফল স্টোর করা
STORE filtered_data INTO 'output_data';

এখানে,

  • GROUP BY কমান্ডে age অনুযায়ী গ্রুপিং করা হয়েছে।
  • তারপর, AVG(data.salary) ফাংশন দিয়ে প্রতিটি বয়সের জন্য গড় বেতন বের করা হয়েছে।
  • HAVING (এক্ষেত্রে FILTER) কমান্ড দিয়ে গড় বেতন ৫০০০ এর বেশি এমন গ্রুপগুলো ফিল্টার করা হয়েছে।

সারাংশ

অ্যাপাচি পিগে GROUP BY এবং HAVING ক্লজ ব্যবহার করে আপনি ডেটাকে গ্রুপ করতে পারেন এবং তারপর শর্ত প্রয়োগ করে শুধুমাত্র আপনার প্রয়োজনীয় গ্রুপগুলো নির্বাচন করতে পারেন। GROUP BY ডেটাকে নির্দিষ্ট ফিল্ডের ভিত্তিতে গ্রুপ করে, এবং HAVING ক্লজের মাধ্যমে আপনি গ্রুপ করা ডেটার উপর শর্ত প্রয়োগ করতে পারেন। এটি বিশাল পরিমাণ ডেটা বিশ্লেষণের জন্য অত্যন্ত কার্যকরী, বিশেষ করে যখন ডিস্ট্রিবিউটেড ডেটা প্রসেসিংয়ের মাধ্যমে বিশেষ ফলাফল প্রাপ্তি লক্ষ্য থাকে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...