PySpark SelectExpr()

Pyspark Selectexpr



Ved at bruge funktionen selectExpr() i PySpark kan vi direkte evaluere et udtryk uden at oprette nogen TABLE eller VIEW. Denne funktion er tilgængelig i pyspark.sql.DataFrame-modulet, som ligner select()-metoden. Med selectExpr() kan vi vise kolonnerne, anvende funktionerne på kolonnerne, evaluere udtrykkene, udføre aggregeringsoperationerne osv. Det er også muligt at evaluere/specificere flere kolonner ad gangen.

Pyspark.sql.DataFrame.selectExpr()

Funktionen selectexpr() tager kolonnerne/sættet af udtryk og returnerer DataFrame baseret på de angivne udtryk/kolonner. Flere udtryk kan angives i denne funktion, som er adskilt med komma. For at vise DataFrame kan vi bruge show()/collect() funktionerne.

Syntaks:







pyspark_DataFrame_object.selectExpr(“Kolonner”/“Udtryk”)

Her er pyspark_DataFrame_object input PySpark DataFrame.



Scenarie 1: Vælg kolonnerne

I dette scenarie vil vi se, hvordan man vælger de bestemte kolonner fra PySpark DataFrame ved hjælp af selectExpr()-funktionen.



Udtrykket, der bruges, er 'eksisterende_kolonne som nyt_navn'. Her er den eksisterende_kolonne det kolonnenavn, der er til stede i DataFrame, og det vises som nyt_navn (Aliasing).





Eksempel:

Opret en PySpark DataFrame med navnet 'agri_df' med 5 rækker og kolonner. Få kolonnerne 'Jordstatus' og 'Jordtype' som 'STATUS' og 'TYPE'.

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbrugsdata med 5 rækker og 5 kolonner

agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },

{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },

{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]



# opret datarammen ud fra ovenstående data

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Få Soil_status og Soil_Type som 'STATUS' og 'TYPE'.

agri_df.selectExpr( 'Jordstatus som STATUS' , 'Jord_Type som TYPE' ).at vise()

Produktion:



Scenarie 2: Angivelse af de betingede udtryk

I dette scenarie vil vi se, hvordan betingelserne i selectExpr()-funktionen evalueres.

Udtrykket, der bruges, er 'existing_column operator value'. Her er den eksisterende_kolonne kolonnenavnet, der er til stede i DataFrame, og vi sammenligner hver værdi i denne kolonne med strengen/værdien.

Eksempel 1:

Tjek, om landet er 'USA' eller ej. Lige til (=) operatoren bruges her.

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbrugsdata med 5 rækker og 5 kolonner

agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },

{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },

{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]



# opret datarammen ud fra ovenstående data

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Tjek, om landet er 'USA' eller ej.

agri_df.selectExpr( 'Land = 'USA'' ).at vise()

Produktion:

Eksempel 2:

Kontroller, om Soil_Type er NULL eller ej. Nøgleordet NULL kontrollerer, om værdien er NULL eller ej. Hvis den er nul, returneres true. Ellers returneres falsk. Det endelige udtryk er 'Soil_Type IS NULL'

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbrugsdata med 5 rækker og 5 kolonner

agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },

{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },

{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]



# opret datarammen ud fra ovenstående data

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Tjek, om Soil_Type er NULL eller ej.

agri_df.selectExpr( 'Soil_Type ER NULL' ).at vise()

Produktion:

Scenarie 3: Evaluering af udtryk

I dette scenarie vil vi se, hvordan man specificerer de matematiske udtryk. Udtrykket der bruges er 'eksisterende_kolonne matematisk_udtryk'.

Eksempel:

  1. Vis den faktiske 'Acres' kolonne.
  2. Tilføj 100 til kolonnen 'Acres'.
  3. Træk 100 fra kolonnen 'Acres'.
  4. Gang 100 med kolonnen 'Acres'.
  5. Divider kolonnen 'Acres' med 100.
importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbrugsdata med 5 rækker og 5 kolonner

agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },

{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },

{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]



# opret datarammen ud fra ovenstående data

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Skriv 4 udtryk for at trække fra, addere, dividere og gange Acres kolonne.

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

Produktion:

Scenarie 4: Anvendelse af aggregerede funktioner

SUM(kolonne_navn) – Den evaluerer den samlede værdi i den angivne kolonne.

MEAN(kolonne_navn) – Den evaluerer gennemsnitsværdien i den angivne kolonne.

MIN(kolonne_navn) – Det returnerer minimumselementet blandt alle elementer i den angivne kolonne.

MAX(kolonne_navn) – Det returnerer det maksimale element blandt alle elementer i den angivne kolonne.

Eksempel:

  1. Find elementerne i alt, gennemsnit, antal, minimum og maksimum for 'Acres'.
  2. Find minimums- og maksimumselementerne i kolonnen 'Jordstatus'.
importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# landbrugsdata med 5 rækker og 5 kolonner

agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },

{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },

{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },

{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]



# opret datarammen ud fra ovenstående data

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Samlede operationer

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

agri_df.selectExpr( 'MIN(Jordstatus)' , 'MAX(Jordstatus)' ).at vise()

Produktion:

Konklusion

Vi diskuterede om funktionen selectExpr() som tager kolonnerne/sæt af udtryk og returnerer DataFrame baseret på de angivne udtryk/kolonner. Som en del af dette lærte vi de fire store scenarier, hvor selectExpr() er anvendelig. Der kan angives flere udtryk i denne funktion, som er adskilt med komma. Der er ingen grund til at oprette en MIDLERTIGT VISNING for at bruge funktionen selectExpr().