PySpark SelectExpr()

Pyspark Selectexpr



באמצעות הפונקציה selectExpr() ב- PySpark, נוכל להעריך ביטוי ישירות מבלי ליצור שום TABLE או VIEW. פונקציה זו זמינה במודול pyspark.sql.DataFrame הדומה לשיטת select() . עם selectExpr(), נוכל להציג את העמודות, להחיל את הפונקציות על העמודות, להעריך את הביטויים, לבצע את פעולות הצבירה וכו'. אפשר גם להעריך/לפרט מספר עמודות בו-זמנית.

Pyspark.sql.DataFrame.selectExpr()

הפונקציה selectexpr() לוקחת את העמודות/קבוצת הביטויים ומחזירה את ה-DataFrame בהתבסס על הביטויים/עמודות שצוינו. ניתן לציין מספר ביטויים בפונקציה זו המופרדת באמצעות פסיק. כדי להציג את ה-DataFrame, נוכל להשתמש בפונקציות show()/collect().

תחביר:







pyspark_DataFrame_object.selectExpr('עמודות'/'ביטויים')

כאן, pyspark_DataFrame_object הוא ה-PySpark DataFrame הקלט.



תרחיש 1: בחר את העמודות

בתרחיש זה, נראה כיצד לבחור את העמודות המסוימות מה-PySpark DataFrame באמצעות הפונקציה selectExpr()‎.



הביטוי שבו נעשה שימוש הוא 'עמודה_קיימת כשם_חדש'. כאן, ה- existent_column הוא שם העמודה שקיים ב-DataFrame והוא מוצג בשם new_name (Aliasing).





דוגמא:

צור PySpark DataFrame בשם 'agri_df' עם 5 שורות ועמודות. קבל את העמודות 'מצב_קרקע' ו-'סוג_קרקע' בתור 'STATUS' ו-'TYPE'.

ייבוא ​​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)

# קבל את ה-Soil_status ו-Soil_Type בתור 'STATUS' ו-'TYPE'.

agri_df.selectExpr( 'מצב_קרקע כ-STATUS' , 'Type_Soil as TYPE' ).הופעה()

תְפוּקָה:



תרחיש 2: ציון הביטויים המותנים

בתרחיש זה, נראה כיצד להעריך את התנאים בתוך הפונקציה selectExpr() .

הביטוי שבו נעשה שימוש הוא 'ערך אופרטור_קיים_עמודה'. כאן, ה- existent_column הוא שם העמודה שקיים ב-DataFrame ואנו משווים כל ערך בעמודה זו עם המחרוזת/ערך.

דוגמה 1:

בדוק אם המדינה היא 'ארה'ב' או לא. כאן נעשה שימוש באופרטור השווה (=).

ייבוא ​​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)

# בדוק אם המדינה היא 'ארה'ב' או לא.

agri_df.selectExpr( 'מדינה = 'ארה'ב'' ).הופעה()

תְפוּקָה:

דוגמה 2:

בדוק אם Soil_Type הוא NULL או לא. מילת המפתח NULL בודקת אם הערך הוא NULL או לא. אם הוא null, true מוחזר. אחרת, false מוחזר. הביטוי הסופי הוא 'Soil_Type IS NULL'

ייבוא ​​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)

# בדוק אם Soil_Type הוא NULL או לא.

agri_df.selectExpr( 'סוג_אדמה הוא NULL' ).הופעה()

תְפוּקָה:

תרחיש 3: הערכת הביטויים

בתרחיש זה, נראה כיצד לציין את הביטויים המתמטיים. הביטוי שבו נעשה שימוש הוא 'ביטוי מתמטי_קיים_עמודה'.

דוגמא:

  1. הצג את העמודה 'אקרים' בפועל.
  2. הוסף 100 לעמודה 'אקרים'.
  3. הורידו 100 מהעמודה 'אקרים'.
  4. הכפל 100 עם העמודה 'אקרים'.
  5. חלקו את העמודה 'אקרים' ב-100.
ייבוא ​​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)

# כתוב 4 ביטויים כדי להחסיר, להוסיף, לחלק ולהכפיל את העמודה אקרים.

agri_df.selectExpr( 'אקרים' , 'אקרים - 100' , 'אקרים * 100' , 'אקרים + 100' , 'אקרים / 100' ).הופעה()

תְפוּקָה:

תרחיש 4: החלת הפונקציות המצטברות

SUM(column_name) - הוא מעריך את הערך הכולל בעמודה שצוינה.

MEAN(column_name) - הוא מעריך את הערך הממוצע בעמודה שצוינה.

MIN(column_name) – הוא מחזיר את האלמנט המינימלי מבין כל האלמנטים בעמודה שצוינה.

MAX(שם_עמודה) – הוא מחזיר את הרכיב המקסימלי מבין כל האלמנטים בעמודה שצוינה.

דוגמא:

  1. מצא את הרכיבים הכוללים, הממוצע, הספירה, המינימום והמקסימום של 'אקרים'.
  2. מצא את האלמנטים המינימליים והמקסימליים בעמודה 'מצב_קרקע'.
ייבוא ​​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)

# פעולות מצטברות

agri_df.selectExpr( 'SUM(אקרים)' , 'ממוצע (דונם)' , 'COUNT(אקרים)' , 'AVG(אקרים)' , 'MIN(אקרים)' ,
'מקס(אקרים)' ).הופעה()

agri_df.selectExpr( 'MIN(סטטוס_קרקע)' , 'MAX(סטטוס_קרקע)' ).הופעה()

תְפוּקָה:

סיכום

דיברנו על הפונקציה selectExpr() שלוקחת את העמודות/קבוצות של ביטויים ומחזירה את ה-DataFrame בהתבסס על הביטויים/עמודות שצוינו. כחלק מכך, למדנו את ארבעת התרחישים העיקריים שבהם ה- selectExpr() ישים. ניתן לציין בפונקציה זו מספר ביטויים המופרדים באמצעות פסיק. אין צורך ליצור TEMPORARY VIEW כדי להשתמש בפונקציה selectExpr() .