PySpark SelectExpr()

Pyspark Selectexpr



PySpark-এ SelectExpr() ফাংশন ব্যবহার করে, আমরা কোনো টেবিল বা ভিউ তৈরি না করেই একটি এক্সপ্রেশনকে সরাসরি মূল্যায়ন করতে পারি। এই ফাংশনটি pyspark.sql.DataFrame মডিউলে উপলব্ধ যা নির্বাচন() পদ্ধতির অনুরূপ। SelectExpr(), আমরা কলাম প্রদর্শন করতে পারি, কলামে ফাংশন প্রয়োগ করতে পারি, অভিব্যক্তি মূল্যায়ন করতে পারি, একত্রিতকরণ ক্রিয়াকলাপ সম্পাদন করতে পারি। একই সময়ে একাধিক কলাম মূল্যায়ন/নির্দিষ্ট করাও সম্ভব।

Pyspark.sql.DataFrame.selectExpr()

Selectexpr() ফাংশনটি কলাম/এক্সপ্রেশনের সেট নেয় এবং নির্দিষ্ট এক্সপ্রেশন/কলামের উপর ভিত্তি করে ডেটাফ্রেম প্রদান করে। কমা দ্বারা পৃথক করা এই ফাংশনে একাধিক অভিব্যক্তি নির্দিষ্ট করা যেতে পারে। DataFrame প্রদর্শন করতে, আমরা show()/collect() ফাংশন ব্যবহার করতে পারি।

বাক্য গঠন:







pyspark_DataFrame_object.selectExpr('কলাম'/'এক্সপ্রেশন')

এখানে, pyspark_DataFrame_object হল ইনপুট PySpark DataFrame।



দৃশ্য 1: কলাম নির্বাচন করুন

এই পরিস্থিতিতে, আমরা সিলেক্টএক্সপ্র() ফাংশন ব্যবহার করে PySpark ডেটাফ্রেম থেকে নির্দিষ্ট কলামগুলি কীভাবে নির্বাচন করতে হয় তা দেখব।



যে অভিব্যক্তিটি ব্যবহার করা হয় তা হল 'existing_column as new_name'। এখানে, বিদ্যমান_কলাম হল কলামের নাম যা ডেটাফ্রেমে উপস্থিত রয়েছে এবং এটি নতুন_নাম (আলিয়াসিং) হিসাবে প্রদর্শিত হয়।





উদাহরণ:

5টি সারি এবং কলাম সহ 'agri_df' নামে একটি PySpark ডেটাফ্রেম তৈরি করুন। 'মৃত্তিকা_স্থিতি' এবং 'মাটির_প্রকার' কলামগুলি 'স্থিতি' এবং 'প্রকার' হিসাবে পান।

পাইসপার্ক আমদানি করুন

pyspark.sql থেকে SparkSession আমদানি করুন

linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()

# 5টি সারি এবং 5টি কলাম সহ কৃষি তথ্য

কৃষি =[{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 2500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 3500 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'ভারত' },

{ 'মাটির_প্রকার' : কোনোটিই নয় , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 210 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ইউকে' },

{ 'মাটির_প্রকার' : 'অন্য' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 1000 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'বালি' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ভারত' }]



# উপরের ডেটা থেকে ডেটাফ্রেম তৈরি করুন

agri_df = linuxhint_spark_app.createDataFrame(agri)

# মাটির_স্থিতি এবং মাটির_প্রকার 'STATUS' এবং 'TYPE' হিসাবে পান।

agri_df.selectExpr( 'মাটির_স্থিতি STATUS হিসাবে' , 'মাটি_টাইপ হিসাবে TYPE' দেখান()

আউটপুট:



দৃশ্যকল্প 2: শর্তসাপেক্ষ অভিব্যক্তি নির্দিষ্ট করা

এই পরিস্থিতিতে, আমরা দেখব কিভাবে selectExpr() ফাংশনের মধ্যে শর্তগুলো মূল্যায়ন করা যায়।

যে এক্সপ্রেশনটি ব্যবহার করা হয় তা হল 'existing_column operator value'। এখানে, বিদ্যমান_কলাম হল সেই কলামের নাম যা ডেটাফ্রেমে উপস্থিত রয়েছে এবং আমরা এই কলামের প্রতিটি মানকে স্ট্রিং/মানের সাথে তুলনা করি।

উদাহরণ 1:

দেশটি 'মার্কিন যুক্তরাষ্ট্র' কিনা তা পরীক্ষা করুন। এখানে ইকুয়াটো (=) অপারেটর ব্যবহার করা হয়েছে।

পাইসপার্ক আমদানি করুন

pyspark.sql থেকে SparkSession আমদানি করুন

linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()

# 5টি সারি এবং 5টি কলাম সহ কৃষি তথ্য

কৃষি =[{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 2500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 3500 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'ভারত' },

{ 'মাটির_প্রকার' : কোনোটিই নয় , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 210 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ইউকে' },

{ 'মাটির_প্রকার' : 'অন্য' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 1000 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'বালি' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ভারত' }]



# উপরের ডেটা থেকে ডেটাফ্রেম তৈরি করুন

agri_df = linuxhint_spark_app.createDataFrame(agri)

# দেশটি 'USA' কিনা তা পরীক্ষা করুন।

agri_df.selectExpr( 'দেশ = 'USA'' দেখান()

আউটপুট:

উদাহরণ 2:

Soil_Type NULL কি না তা পরীক্ষা করুন। NULL কীওয়ার্ড চেক করে যে মানটি NULL কিনা। এটি শূন্য হলে, সত্য ফেরত দেওয়া হয়। অন্যথায়, মিথ্যা ফেরত দেওয়া হয়। চূড়ান্ত অভিব্যক্তি হল 'মাটির_প্রকার শূন্য'

পাইসপার্ক আমদানি করুন

pyspark.sql থেকে SparkSession আমদানি করুন

linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()

# 5টি সারি এবং 5টি কলাম সহ কৃষি তথ্য

কৃষি =[{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 2500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 3500 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'ভারত' },

{ 'মাটির_প্রকার' : কোনোটিই নয় , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 210 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ইউকে' },

{ 'মাটির_প্রকার' : 'অন্য' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 1000 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'বালি' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ভারত' }]



# উপরের ডেটা থেকে ডেটাফ্রেম তৈরি করুন

agri_df = linuxhint_spark_app.createDataFrame(agri)

# মাটির_প্রকারটি NULL কিনা তা পরীক্ষা করুন।

agri_df.selectExpr( 'মাটির_প্রকার শূন্য' দেখান()

আউটপুট:

দৃশ্যকল্প 3: অভিব্যক্তি মূল্যায়ন

এই দৃশ্যে, আমরা দেখব কিভাবে গাণিতিক রাশিগুলি নির্দিষ্ট করতে হয়। যে অভিব্যক্তিটি ব্যবহার করা হয় তা হল 'বিদ্যমান_কলাম গাণিতিক_প্রকাশ'।

উদাহরণ:

  1. প্রকৃত 'একর' কলাম প্রদর্শন করুন।
  2. 'একর' কলামে 100 যোগ করুন।
  3. 'একর' কলাম থেকে 100 বিয়োগ করুন।
  4. 'একর' কলাম দিয়ে 100 গুণ করুন।
  5. 'একর' কলামটিকে 100 দ্বারা ভাগ করুন।
পাইসপার্ক আমদানি করুন

pyspark.sql থেকে SparkSession আমদানি করুন

linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()

# 5টি সারি এবং 5টি কলাম সহ কৃষি তথ্য

কৃষি =[{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 2500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 3500 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'ভারত' },

{ 'মাটির_প্রকার' : কোনোটিই নয় , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 210 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ইউকে' },

{ 'মাটির_প্রকার' : 'অন্য' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 1000 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'বালি' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ভারত' }]



# উপরের ডেটা থেকে ডেটাফ্রেম তৈরি করুন

agri_df = linuxhint_spark_app.createDataFrame(agri)

# একর কলাম বিয়োগ, যোগ, ভাগ এবং গুণ করতে 4 টি ভাব লিখুন।

agri_df.selectExpr( 'একর' , 'একর - 100' , 'একর * 100' , 'একর + 100' , 'একর / 100' দেখান()

আউটপুট:

দৃশ্যকল্প 4: সমষ্টিগত কার্যাবলী প্রয়োগ করা

SUM(কলাম_নাম) - এটি নির্দিষ্ট কলামে মোট মান মূল্যায়ন করে।

MEAN(কলাম_নাম) - এটি নির্দিষ্ট কলামে গড় মান মূল্যায়ন করে।

MIN(কলাম_নাম) - এটি নির্দিষ্ট কলামের সমস্ত উপাদানগুলির মধ্যে সর্বনিম্ন উপাদান প্রদান করে।

MAX(কলাম_নাম) - এটি নির্দিষ্ট কলামের সমস্ত উপাদানগুলির মধ্যে সর্বাধিক উপাদান প্রদান করে।

উদাহরণ:

  1. 'একর' এর মোট, গড়, গণনা, সর্বনিম্ন এবং সর্বাধিক উপাদানগুলি খুঁজুন।
  2. 'মৃত্তিকা_স্থিতি' কলামে সর্বনিম্ন এবং সর্বোচ্চ উপাদান খুঁজুন।
পাইসপার্ক আমদানি করুন

pyspark.sql থেকে SparkSession আমদানি করুন

linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()

# 5টি সারি এবং 5টি কলাম সহ কৃষি তথ্য

কৃষি =[{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 2500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'কালো' , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 3500 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'ভারত' },

{ 'মাটির_প্রকার' : কোনোটিই নয় , 'সেচ_প্রাপ্যতা' : 'হ্যাঁ' , 'একর' : 210 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ইউকে' },

{ 'মাটির_প্রকার' : 'অন্য' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 1000 , 'মাটির_স্থিতি' : 'ভেজা' ,
'দেশ' : 'আমেরিকা' },

{ 'মাটির_প্রকার' : 'বালি' , 'সেচ_প্রাপ্যতা' : 'না' , 'একর' : 500 , 'মাটির_স্থিতি' : 'শুকনো' ,
'দেশ' : 'ভারত' }]



# উপরের ডেটা থেকে ডেটাফ্রেম তৈরি করুন

agri_df = linuxhint_spark_app.createDataFrame(agri)

# মোট অপারেশন

agri_df.selectExpr( 'SUM(একর)' , 'মান (একর)' , 'COUNT(একর)' , 'AVG(একর)' , 'MIN(একর)' ,
'MAX(একর)' দেখান()

agri_df.selectExpr( 'MIN(মৃত্তিকা_স্থিতি)' , 'MAX(মাটির_স্থিতি)' দেখান()

আউটপুট:

উপসংহার

আমরা SelectExpr() ফাংশন সম্পর্কে আলোচনা করেছি যা কলাম/এক্সপ্রেশনের সেট নেয় এবং নির্দিষ্ট এক্সপ্রেশন/কলামের উপর ভিত্তি করে ডেটাফ্রেম প্রদান করে। এর অংশ হিসাবে, আমরা চারটি প্রধান পরিস্থিতি শিখেছি যেখানে selectExpr() প্রযোজ্য। এই ফাংশনে একাধিক অভিব্যক্তি নির্দিষ্ট করা যেতে পারে যা কমা দ্বারা পৃথক করা হয়। SelectExpr() ফাংশন ব্যবহার করার জন্য একটি অস্থায়ী ভিউ তৈরি করার প্রয়োজন নেই।