我有一個要轉換為 PySpark 的 MS Access SQL 查詢。查詢如下所示(我們有兩個表 Employee 和 Department):
UPDATE EMPLOYEE INNER JOIN [DEPARTMENT] ON
EMPLOYEE.STATEPROVINCE = [DEPARTMENT].[STATE_LEVEL]
SET EMPLOYEE.STATEPROVINCE = [DEPARTMENT]![STATE_ABBREVIATION];
uj5u.com熱心網友回復:
測驗資料框:
from pyspark.sql import functions as F
df_emp = spark.createDataFrame([(1, 'a'), (2, 'bb')], ['EMPLOYEE', 'STATEPROVINCE'])
df_emp.show()
# -------- -------------
# |EMPLOYEE|STATEPROVINCE|
# -------- -------------
# | 1| a|
# | 2| bb|
# -------- -------------
df_dept = spark.createDataFrame([('bb', 'b')], ['STATE_LEVEL', 'STATE_ABBREVIATION'])
df_dept.show()
# ----------- ------------------
# |STATE_LEVEL|STATE_ABBREVIATION|
# ----------- ------------------
# | bb| b|
# ----------- ------------------
在 Microsoft Access 中運行 SQL 查詢會執行以下操作:

在 PySpark 中,你可以像這樣得到它:
df = (df_emp.alias('a')
.join(df_dept.alias('b'), df_emp.STATEPROVINCE == df_dept.STATE_LEVEL, 'left')
.select(
*[c for c in df_emp.columns if c != 'STATEPROVINCE'],
F.coalesce('b.STATE_ABBREVIATION', 'a.STATEPROVINCE').alias('STATEPROVINCE')
)
)
df.show()
# -------- -------------
# |EMPLOYEE|STATEPROVINCE|
# -------- -------------
# | 1| a|
# | 2| b|
# -------- -------------
首先你做一個 left join。那么,select。
有select2 個部分。
- 首先,您選擇
df_emp除“STATEPROVINCE”以外的所有內容。 - 然后,對于新的“STATEPROVINCE”,從 中選擇“STATE_ABBREVIATION”
df_dept,但如果它為空(即在 中不存在df_dept),則從 中選擇“STATEPROVINCE”df_emp。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516137.html
上一篇:使用最新的C#Sendgrid9.28.1在電子郵件中嵌入影像
下一篇:我可以避免多次加入同一張桌子嗎?
