PySpark SelectExpr()

Pyspark Selectexpr



Gamit ang function na selectExpr() sa PySpark, maaari naming direktang suriin ang isang expression nang hindi gumagawa ng anumang TABLE o VIEW. Ang function na ito ay available sa pyspark.sql.DataFrame module na katulad ng select() method. Sa selectExpr(), maaari naming ipakita ang mga column, ilapat ang mga function sa mga column, suriin ang mga expression, isagawa ang mga pagpapatakbo ng pagsasama-sama, atbp. Posible rin na suriin/tukuyin ang maramihang mga column sa isang pagkakataon.

Pyspark.sql.DataFrame.selectExpr()

Kinukuha ng function na selectexpr() ang mga column/set ng mga expression at ibinabalik ang DataFrame batay sa mga tinukoy na expression/column. Maaaring tukuyin ang maraming expression sa function na ito na pinaghihiwalay ng kuwit. Upang ipakita ang DataFrame, maaari naming gamitin ang show()/collect() function.

Syntax:







pyspark_DataFrame_object.selectExpr('Mga Column'/'Mga Expression')

Dito, ang pyspark_DataFrame_object ay ang input ng PySpark DataFrame.



Scenario 1: Piliin ang Mga Column

Sa sitwasyong ito, makikita natin kung paano piliin ang mga partikular na column mula sa PySpark DataFrame gamit ang selectExpr() function.



Ang expression na ginamit ay 'umiiral na_haligi bilang bagong_pangalan'. Dito, ang existing_column ay ang pangalan ng column na nasa DataFrame at ito ay ipinapakita bilang new_name (Aliasing).





Halimbawa:

Gumawa ng PySpark DataFrame na pinangalanang 'agri_df' na may 5 row at column. Kunin ang mga column na “Soil_status” at “Soil_Type” bilang “STATUS” at “TYPE”.

import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

# data ng pagsasaka na may 5 row at 5 column

agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },

{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },

{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]



# lumikha ng dataframe mula sa data sa itaas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Kunin ang Soil_status at Soil_Type bilang 'STATUS' at 'TYPE'.

agri_df.selectExpr( 'Katayuan_lupa bilang STATUS' , 'Uri_lupa bilang TYPE' ).show()

Output:



Scenario 2: Pagtukoy sa Mga Conditional Expression

Sa sitwasyong ito, makikita natin kung paano suriin ang mga kundisyon sa loob ng function na selectExpr().

Ang expression na ginamit ay 'existing_column operator value'. Dito, ang existing_column ay ang pangalan ng column na nasa DataFrame at inihahambing namin ang bawat value sa column na ito sa string/value.

Halimbawa 1:

Suriin kung ang bansa ay 'USA' o hindi. Ang equalto (=) operator ay ginagamit dito.

import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

# data ng pagsasaka na may 5 row at 5 column

agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },

{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },

{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]



# lumikha ng dataframe mula sa data sa itaas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Suriin kung ang bansa ay 'USA' o hindi.

agri_df.selectExpr( 'Bansa = 'USA'' ).show()

Output:

Halimbawa 2:

Suriin kung ang Soil_Type ay NULL o hindi. Ang NULL keyword ay nagsusuri kung ang halaga ay NULL o hindi. Kung ito ay null, true ang ibinalik. Kung hindi, ibabalik ang false. Ang huling expression ay 'Soil_Type IS NULL'

import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

# data ng pagsasaka na may 5 row at 5 column

agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },

{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },

{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]



# lumikha ng dataframe mula sa data sa itaas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Suriin kung ang Soil_Type ay NULL o hindi.

agri_df.selectExpr( 'Uri_ng_lupa AY NULL' ).show()

Output:

Sitwasyon 3: Pagsusuri sa mga Ekspresyon

Sa sitwasyong ito, makikita natin kung paano tukuyin ang mga mathematical expression. Ang expression na ginamit ay 'existing_column mathematical_expression'.

Halimbawa:

  1. Ipakita ang aktwal na column na 'Acres'.
  2. Magdagdag ng 100 sa column na 'Acres'.
  3. Magbawas ng 100 sa column na “Acres”.
  4. I-multiply ang 100 gamit ang column na 'Acres'.
  5. Hatiin ang column na 'Acres' sa 100.
import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

# data ng pagsasaka na may 5 row at 5 column

agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },

{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },

{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]



# lumikha ng dataframe mula sa data sa itaas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Sumulat ng 4 na Ekspresyon upang ibawas, idagdag, hatiin at i-multiply ang hanay ng Acres.

agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).show()

Output:

Sitwasyon 4: Paglalapat ng Pinagsama-samang Mga Function

SUM(column_name) – Sinusuri nito ang kabuuang halaga sa tinukoy na column.

MEAN(column_name) – Sinusuri nito ang average na halaga sa tinukoy na column.

MIN(column_name) – Ibinabalik nito ang pinakamababang elemento sa lahat ng elemento sa tinukoy na column.

MAX(column_name) – Ibinabalik nito ang pinakamataas na elemento sa lahat ng elemento sa tinukoy na column.

Halimbawa:

  1. Hanapin ang kabuuan, average, bilang, minimum, at maximum na mga elemento ng 'Acres'.
  2. Hanapin ang minimum at maximum na mga elemento sa column na 'Soil_status'.
import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

# data ng pagsasaka na may 5 row at 5 column

agri =[{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 2500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Black' , 'Irrigation_availability' : 'Oo' , 'Acres' : 3500 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'India' },

{ 'Uri_lupa' : wala , 'Irrigation_availability' : 'Oo' , 'Acres' : 210 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'UK' },

{ 'Uri_lupa' : 'Iba pa' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 1000 , 'Katayuan_lupa' : 'Basa' ,
'Bansa' : 'USA' },

{ 'Uri_lupa' : 'Buhangin' , 'Irrigation_availability' : 'Hindi' , 'Acres' : 500 , 'Katayuan_lupa' : 'Tuyo' ,
'Bansa' : 'India' }]



# lumikha ng dataframe mula sa data sa itaas

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Pinagsama-samang operasyon

agri_df.selectExpr( 'SUM(Acres)' , 'MEAN(Acres)' , 'COUNT(Acres)' , 'AVG(Acres)' , 'MIN(Acres)' ,
'MAX(Acres)' ).show()

agri_df.selectExpr( 'MIN(Soil_status)' , 'MAX(Soil_status)' ).show()

Output:

Konklusyon

Tinalakay namin ang tungkol sa function na selectExpr() na kumukuha ng mga column/set ng mga expression at ibinabalik ang DataFrame batay sa mga tinukoy na expression/column. Bilang bahagi nito, natutunan namin ang apat na pangunahing senaryo kung saan naaangkop ang selectExpr(). Maaaring tukuyin ang maraming expression sa function na ito na pinaghihiwalay ng kuwit. Hindi na kailangang gumawa ng PANSAMANTALA TINGIN para magamit ang function na selectExpr().