PySpark SelectExpr ()

Pyspark Selectexpr



باستخدام وظيفة selectExpr () في PySpark ، يمكننا تقييم تعبير مباشرة دون إنشاء أي جدول أو عرض. هذه الوظيفة متاحة في الوحدة النمطية pyspark.sql.DataFrame التي تشبه طريقة select (). باستخدام selectExpr () ، يمكننا عرض الأعمدة ، وتطبيق الوظائف على الأعمدة ، وتقييم التعبيرات ، وتنفيذ عمليات التجميع ، وما إلى ذلك. ومن الممكن أيضًا تقييم / تحديد عدة أعمدة في وقت واحد.

Pyspark.sql.DataFrame.selectExpr ()

تأخذ الدالة selectexpr () الأعمدة / مجموعة التعبيرات وترجع DataFrame بناءً على التعبيرات / الأعمدة المحددة. يمكن تحديد تعبيرات متعددة في هذه الوظيفة مفصولة بفاصلة. لعرض DataFrame ، يمكننا استخدام وظائف show () / collection ().

بناء الجملة:







pyspark_DataFrame_object.selectExpr ('الأعمدة' / 'التعبيرات')

هنا ، pyspark_DataFrame_object هو إدخال PySpark DataFrame.



السيناريو 1: حدد الأعمدة

في هذا السيناريو ، سنرى كيفية تحديد أعمدة معينة من PySpark DataFrame باستخدام وظيفة selectExpr ().



التعبير المستخدم هو 'العمود الموجود باسم جديد'. هنا ، يوجد اسم العمود الموجود في DataFrame ويتم عرضه كـ new_name (Aliasing).





مثال:

قم بإنشاء PySpark DataFrame باسم “agri_df” مع 5 صفوف وأعمدة. احصل على أعمدة 'Soil_status' و 'Soil_Type' كـ 'STATUS' و 'TYPE'.

استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# بيانات الزراعة مع 5 صفوف و 5 أعمدة

agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،

{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،

{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،

{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،

{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]



# إنشاء إطار البيانات من البيانات أعلاه

agri_df = linuxhint_spark_app.createDataFrame (agri)

# احصل على Soil_status و Soil_Type كـ 'STATUS' و 'TYPE'.

agri_df.selectExpr ( 'Soil_status as STATUS' و 'نوع التربة كـ TYPE' ).يعرض()

انتاج:



السيناريو 2: تحديد التعبيرات الشرطية

في هذا السيناريو ، سنرى كيفية تقييم الشروط داخل وظيفة selectExpr ().

التعبير المستخدم هو 'قيمة عامل تشغيل العمود الموجود'. هنا ، يوجد عمود موجود هو اسم العمود الموجود في DataFrame ونقارن كل قيمة في هذا العمود بالسلسلة / القيمة.

مثال 1:

تحقق مما إذا كانت الدولة 'USA' أم لا. يتم استخدام عامل المساواة (=) هنا.

استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# بيانات الزراعة مع 5 صفوف و 5 أعمدة

agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،

{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،

{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،

{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،

{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]



# إنشاء إطار البيانات من البيانات أعلاه

agri_df = linuxhint_spark_app.createDataFrame (agri)

# تحقق مما إذا كانت الدولة 'USA' أم لا.

agri_df.selectExpr ( 'الدولة =' الولايات المتحدة الأمريكية ' ).يعرض()

انتاج:

المثال 2:

تحقق مما إذا كان Soil_Type فارغًا أم لا. تتحقق الكلمة الأساسية NULL مما إذا كانت القيمة NULL أم لا. إذا كانت خالية ، فسيتم إرجاع صحيح. خلاف ذلك ، يتم إرجاع خطأ. التعبير الأخير هو 'Soil_Type IS NULL'

استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# بيانات الزراعة مع 5 صفوف و 5 أعمدة

agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،

{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،

{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،

{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،

{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]



# إنشاء إطار البيانات من البيانات أعلاه

agri_df = linuxhint_spark_app.createDataFrame (agri)

# تحقق مما إذا كان Soil_Type فارغًا أم لا.

agri_df.selectExpr ( 'Soil_Type IS NULL' ).يعرض()

انتاج:

السيناريو 3: تقييم التعبيرات

في هذا السيناريو ، سنرى كيفية تحديد التعبيرات الرياضية. التعبير المستخدم هو 'تعبير_الرياضيات الموجودة في العمود'.

مثال:

  1. اعرض عمود 'الفدان' الفعلي.
  2. أضف 100 إلى عمود 'فدان'.
  3. اطرح 100 من عمود 'فدان'.
  4. اضرب 100 بعمود 'فدان'.
  5. قسّم عمود 'الفدان' على 100.
استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# بيانات الزراعة مع 5 صفوف و 5 أعمدة

agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 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. ابحث عن الحد الأدنى والحد الأقصى من العناصر في عمود 'Soil_status'.
استيراد pyspark

من pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName ( 'تلميح Linux' ) .getOrCreate ()

# بيانات الزراعة مع 5 صفوف و 5 أعمدة

agri = [{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'لا' و 'فدان' : 2500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،

{ 'نوع التربة' : 'أسود' و 'الري_توافر' : 'نعم' و 'فدان' : 3500 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الهند' } ،

{ 'نوع التربة' : لا أحد و 'الري_توافر' : 'نعم' و 'فدان' : 210 و 'حالة_التربة' : 'جاف' و
'دولة' : 'المملكة المتحدة' } ،

{ 'نوع التربة' : 'آخر' و 'الري_توافر' : 'لا' و 'فدان' : 1000 و 'حالة_التربة' : 'مبتل' و
'دولة' : 'الولايات المتحدة الأمريكية' } ،

{ 'نوع التربة' : 'رمل' و 'الري_توافر' : 'لا' و 'فدان' : 500 و 'حالة_التربة' : 'جاف' و
'دولة' : 'الهند' }]



# إنشاء إطار البيانات من البيانات أعلاه

agri_df = linuxhint_spark_app.createDataFrame (agri)

# إجمالي العمليات

agri_df.selectExpr ( 'سوم (فدان)' و 'يعني (فدان)' و 'COUNT (فدان)' و 'AVG (فدان)' و 'MIN (فدان)' و
'MAX (فدان)' ).يعرض()

agri_df.selectExpr ( 'MIN (Soil_status)' و 'MAX (Soil_status)' ).يعرض()

انتاج:

خاتمة

ناقشنا حول وظيفة selectExpr () التي تأخذ أعمدة / مجموعات التعبيرات وتعيد DataFrame بناءً على التعبيرات / الأعمدة المحددة. كجزء من هذا ، تعلمنا السيناريوهات الأربعة الرئيسية التي يكون فيها selectExpr () قابلاً للتطبيق. يمكن تحديد تعبيرات متعددة في هذه الوظيفة مفصولة بفاصلة. ليست هناك حاجة لإنشاء عرض مؤقت لاستخدام وظيفة selectExpr ().