PySpark SQL 函數的 expr(~)
方法解析給定的 SQL 表達式。
參數
1. str
| string
要解析的 SQL 表達式。
返回值
PySpark 專欄。
例子
考慮以下PySpark DataFrame:
df = spark.createDataFrame([['Alex',30],['Bob',50]], ['name','age'])
df.show()
+----+---+
|name|age|
+----+---+
|Alex| 30|
| Bob| 50|
+----+---+
使用 expr 方法將列值轉換為大寫
expr(~)
方法接受 SQL 表達式作為參數,因此我們可以使用 SQL 函數,例如 upper(~)
:
import pyspark.sql.functions as F
df.select(F.expr('upper(name)')).show()
+-----------+
|upper(name)|
+-----------+
| ALEX|
| BOB|
+-----------+
注意
expr(~)
方法通常可以使用 PySpark DataFrame 的 selectExpr(~)
方法編寫得更簡潔。例如,上麵的情況可以改寫為:
df.selectExpr('upper(name)').show()
+-----------+
|upper(name)|
+-----------+
| ALEX|
| BOB|
+-----------+
我建議您盡可能使用 selectExpr(~)
,因為:
-
您不必導入 SQL 函數庫 (
pyspark.sql.functions
)。 -
語法更短
使用expr方法解析複雜的SQL表達式
下麵是使用 AND
和 LIKE
等子句的更複雜的 SQL 表達式:
df.select(F.expr('age > 40 AND name LIKE "B%"').alias('result')).show()
+------+
|result|
+------+
| false|
| true|
+------+
請注意以下事項:
-
我們正在檢查
age
大於40
且name
以B
開頭的行。 -
我們使用
alias(~)
方法將標簽'result'
分配給expr(~)
返回的Column
。
expr方法返回的布爾掩碼的實際應用
正如我們在上麵的示例中看到的,expr(~)
方法可以根據您提供的 SQL 表達式返回布爾掩碼:
df.select(F.expr('age > 40 AND name LIKE "B%"').alias('result')).show()
+------+
|result|
+------+
| false|
| true|
+------+
這允許我們使用 any(~)
檢查是否存在滿足給定條件的行:
df.select(F.expr('any(age > 40 AND name LIKE "B%")').alias('exists?')).show()
+-------+
|exists?|
+-------+
| true|
+-------+
在這裏,我們得到True
,因為布爾掩碼中至少存在一個True
值。
使用 expr 方法映射列值
我們可以在 expr(~)
方法中使用 CASE WHEN
映射列值,如下所示:
col = F.expr('CASE WHEN age < 40 THEN "JUNIOR" ELSE "SENIOR" END').alias('result')
df.withColumn('status', col).show()
+----+---+------+
|name|age|status|
+----+---+------+
|Alex| 30|JUNIOR|
| Bob| 50|SENIOR|
+----+---+------+
在此,請注意以下事項:
-
我們正在使用 DataFrame 的
withColumn(~)
方法來獲取新的 PySpark DataFrame,其中包括expr(~)
返回的列。
相關用法
- Python PySpark SQL Functions explode方法用法及代碼示例
- Python PySpark SQL Functions element_at方法用法及代碼示例
- Python PySpark SQL Functions split方法用法及代碼示例
- Python PySpark SQL Functions repeat方法用法及代碼示例
- Python PySpark SQL Functions concat方法用法及代碼示例
- Python PySpark SQL Functions instr方法用法及代碼示例
- Python PySpark SQL Functions count_distinct方法用法及代碼示例
- Python PySpark SQL Functions dayofmonth方法用法及代碼示例
- Python PySpark SQL Functions date_add方法用法及代碼示例
- Python PySpark SQL Functions array方法用法及代碼示例
- Python PySpark SQL Functions concat_ws方法用法及代碼示例
- Python PySpark SQL Functions col方法用法及代碼示例
- Python PySpark SQL Functions translate方法用法及代碼示例
- Python PySpark SQL Functions dayofweek方法用法及代碼示例
- Python PySpark SQL Functions regexp_extract方法用法及代碼示例
- Python PySpark SQL Functions regexp_replace方法用法及代碼示例
- Python PySpark SQL Functions round方法用法及代碼示例
- Python PySpark SQL Functions countDistinct方法用法及代碼示例
- Python PySpark SQL Functions date_format方法用法及代碼示例
- Python PySpark SQL Functions collect_list方法用法及代碼示例
- Python PySpark SQL Functions lit方法用法及代碼示例
- Python PySpark SQL Functions upper方法用法及代碼示例
- Python PySpark SQL Functions length方法用法及代碼示例
- Python PySpark SQL Functions dayofyear方法用法及代碼示例
- Python PySpark SQL Functions trim方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark SQL Functions | expr method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。