Window Functions এবং Ranking গাইড ও নোট

Big Data and Analytics - অ্যাপাচি স্পার্ক (Apache Spark) - DataFrames এবং SQL এর জন্য Advanced Operations
470

অ্যাপাচি স্পার্ক (Apache Spark) একটি শক্তিশালী ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক যা ডেটা ট্রান্সফরমেশন, বিশ্লেষণ, এবং মেশিন লার্নিংয়ের জন্য ব্যবহৃত হয়। Window Functions এবং Ranking স্পার্কের গুরুত্বপূর্ণ ফিচার যা ডেটা বিশ্লেষণে বিশেষভাবে সহায়ক। এগুলি বিশেষত তখন ব্যবহৃত হয় যখন আপনাকে ডেটার নির্দিষ্ট সেগমেন্টের উপর বিশ্লেষণ করতে হয়, যেমন র‍্যাংকিং বা অগ্রগতি নির্ধারণ।

এই টিউটোরিয়ালে আমরা Window Functions এবং Ranking নিয়ে আলোচনা করব এবং কিভাবে এগুলি স্পার্কে কার্যকরভাবে ব্যবহৃত হয় তা দেখাব।


1. Window Functions in Apache Spark

Window Functions স্পার্কে ব্যবহারকারীকে একটি নির্দিষ্ট উইন্ডো বা পরিসরের মধ্যে ডেটা প্রসেস করতে সাহায্য করে। এটি র‍্যাংকিং, অগ্রগতি বা সঞ্চিত ডেটার উপর অপারেশন প্রয়োগ করতে ব্যবহৃত হয়, যেখানে প্রতিটি রেকর্ডের জন্য পুরো ডেটাসেটের তুলনায় একটি সাব-সেটের উপর কাজ করা হয়। উইন্ডো ফাংশনগুলি সাধারণত grouping এবং partitioning সহ ব্যবহার করা হয়।

Key Features of Window Functions:

  1. Partitioning: এটি ডেটাকে একটি নির্দিষ্ট কন্ডিশনের ভিত্তিতে ভাগ করে নেয়, যেন উইন্ডো ফাংশন শুধুমাত্র সেই অংশে কাজ করতে পারে।
  2. Ordering: উইন্ডো ফাংশনটি ডেটাকে একটি নির্দিষ্ট কলামের ভিত্তিতে সাজাতে সাহায্য করে।
  3. Window Specification: স্পার্কে উইন্ডো স্পেসিফিকেশন ব্যবহার করা হয় যেখানে ডেটাকে নির্দিষ্ট একটি অংশের মধ্যে সাজানো এবং বিশ্লেষণ করা হয়।

Basic Window Function Syntax:

from pyspark.sql import SparkSession
from pyspark.sql.window import Window
import pyspark.sql.functions as F

# Create Spark session
spark = SparkSession.builder.master("local").appName("Window Function Example").getOrCreate()

# Sample data
data = [("Alice", 1), ("Bob", 2), ("Cathy", 3), ("David", 4)]
df = spark.createDataFrame(data, ["Name", "Value"])

# Define the window specification
windowSpec = Window.orderBy("Value")

# Apply window functions
df.withColumn("Rank", F.rank().over(windowSpec)).show()

Output:

+-----+-----+----+
| Name|Value|Rank|
+-----+-----+----+
|Alice|    1|   1|
|  Bob|    2|   2|
|Cathy|    3|   3|
|David|    4|   4|
+-----+-----+----+

এখানে:

  • `Window.orderBy("Value") উইন্ডো স্পেসিফিকেশন তৈরি করে যা ডেটাকে Value কলামের ভিত্তিতে সাজায়।
  • rank() উইন্ডো ফাংশন ব্যবহার করে, প্রতিটি রেকর্ডের জন্য একটি র‍্যাংকিং তৈরি করা হয়েছে।

2. Ranking in Apache Spark

Ranking Functions স্পার্কে বিশেষভাবে ডেটার মধ্যে র‍্যাংক তৈরি করতে ব্যবহৃত হয়। এটি ব্যবহার করে আপনি Row Number, Rank, এবং Dense Rank এর মত র‍্যাংকিং তৈরি করতে পারেন। এগুলি সাধারণত Window Functions এর সাথে ব্যবহৃত হয়।

Types of Ranking Functions:

  1. rank(): এটি প্রতিটি রেকর্ডকে র‍্যাংক করে, কিন্তু একে অপরের সমান রেকর্ড থাকলে তাদের র‍্যাংক একসাথে হয়ে যায় (জোড়া র‍্যাংকিং)।
  2. dense_rank(): এটি র‍্যাংকিং সিস্টেমে গ্যাপ ছাড়া র‍্যাংকিং তৈরি করে।
  3. row_number(): এটি প্রতিটি রেকর্ডকে একটি ইউনিক র‍্যাংক প্রদান করে, যেখানে সমান রেকর্ডের জন্যও আলাদা র‍্যাংক থাকে।

Examples of Ranking Functions:

  1. rank():

    df = spark.createDataFrame([("Alice", 50), ("Bob", 60), ("Cathy", 50), ("David", 80)], ["Name", "Value"])
    
    # Define the window specification
    windowSpec = Window.orderBy("Value")
    
    # Apply rank function
    df.withColumn("Rank", F.rank().over(windowSpec)).show()
    

    Output:

    +-----+-----+----+
    | Name|Value|Rank|
    +-----+-----+----+
    |Alice|   50|   1|
    |Cathy|   50|   1|
    |  Bob|   60|   3|
    |David|   80|   4|
    +-----+-----+----+
    

    এখানে, rank() ব্যবহার করে Alice এবং Cathy একই র‍্যাংক পেয়েছে (1), কারণ তাদের Value সমান, এবং তারপর Bob এবং David এর র‍্যাংক যথাক্রমে 3 এবং 4।

  2. dense_rank():

    df = spark.createDataFrame([("Alice", 50), ("Bob", 60), ("Cathy", 50), ("David", 80)], ["Name", "Value"])
    
    # Define the window specification
    windowSpec = Window.orderBy("Value")
    
    # Apply dense_rank function
    df.withColumn("DenseRank", F.dense_rank().over(windowSpec)).show()
    

    Output:

    +-----+-----+--------+
    | Name|Value|DenseRank|
    +-----+-----+--------+
    |Alice|   50|       1|
    |Cathy|   50|       1|
    |  Bob|   60|       2|
    |David|   80|       3|
    +-----+-----+--------+
    

    এখানে, dense_rank() ব্যবহার করলে র‍্যাংকিং গ্যাপ ছাড়া তৈরি হয়েছে।

  3. row_number():

    df = spark.createDataFrame([("Alice", 50), ("Bob", 60), ("Cathy", 50), ("David", 80)], ["Name", "Value"])
    
    # Define the window specification
    windowSpec = Window.orderBy("Value")
    
    # Apply row_number function
    df.withColumn("RowNumber", F.row_number().over(windowSpec)).show()
    

    Output:

    +-----+-----+--------+
    | Name|Value|RowNumber|
    +-----+-----+--------+
    |Alice|   50|       1|
    |Cathy|   50|       2|
    |  Bob|   60|       3|
    |David|   80|       4|
    +-----+-----+--------+
    

    এখানে, row_number() প্রতিটি রেকর্ডের জন্য একটি ইউনিক র‍্যাংক তৈরি করেছে, যদিও Alice এবং Cathy এর Value সমান ছিল।


3. Use Cases of Window Functions and Ranking

  1. Top N Records: উইন্ডো ফাংশন এবং র‍্যাংকিং ব্যবহার করে আপনি Top N Records নির্বাচন করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি ডেটাসেটে সর্বোচ্চ বিক্রির রেকর্ড চাচ্ছেন, তাহলে rank() বা dense_rank() ব্যবহার করে আপনি সহজেই এটি করতে পারেন।
  2. Running Totals and Moving Averages: উইন্ডো ফাংশন ব্যবহারের মাধ্যমে আপনি রানিং টোটাল বা মুভিং এভারেজ ক্যালকুলেট করতে পারেন। উদাহরণস্বরূপ, sum() উইন্ডো ফাংশন ব্যবহার করে আপনি একটি চলমান যোগফল তৈরি করতে পারেন।
  3. Partitioned Data Analysis: উইন্ডো ফাংশন ব্যবহার করে আপনি ডেটাকে বিভিন্ন partitions এ ভাগ করে প্রতিটি সেগমেন্টের উপর আলাদাভাবে বিশ্লেষণ করতে পারেন। যেমন, গ্রুপিং এর মধ্যে প্রতিটি গ্রুপের উপর র‍্যাংকিং বা স্লাইডিং উইন্ডো বিশ্লেষণ।

Conclusion

Window Functions এবং Ranking স্পার্ক SQL এর দুটি শক্তিশালী ফিচার যা ডেটা বিশ্লেষণ এবং প্রসেসিংকে আরও উন্নত করে তোলে। Window Functions আপনাকে একটি নির্দিষ্ট উইন্ডোর মধ্যে ডেটা বিশ্লেষণ করতে সাহায্য করে, যেখানে আপনি ডেটার উপর একাধিক অপারেশন প্রয়োগ করতে পারেন, যেমন র‍্যাংকিং, অগ্রগতি হিসাব, এবং পার্টিশনিং। Ranking Functions ব্যবহার করে আপনি ডেটাতে র‍্যাংকিং, স্লাইডিং উইন্ডো বা অগ্রগতি বিশ্লেষণ করতে পারেন, যা অনেক ক্ষেত্রেই ব্যবসায়িক সিদ্ধান্ত গ্রহণে সহায়ক।

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

Are you sure to start over?

Loading...