Pyspark sql for oracle subquery



如何将以下基于 oracle 的 sql 查询编写到等效的 pyspark sql 中,因为这不受支持,因为它是由于在 Spark 下嵌套.sql(*query( 有没有办法使用 pyspark 数据帧来编写它?

SELECT TABLE1.COL1 
FROM TABLE1 
WHERE COL2 = (
SELECT MAX(COL2) 
FROM TABLE1 
WHERE TABLE1.COL3 = TABLE2.COL3 OR TABLE1.COL4 = TABLE2.COL4
)

表 1 包含列COL1, COL2, COL3, COL4表 2 包含列COL3, COL4

如果您使用 JDBC 驱动程序,您可以使用此语法吗:

sql_request = "(select TABLE1.COL1 FROM TABLE1 WHERE COL2 = (SELECT MAX(COL2) FROM TABLE1 WHERE TABLE1.COL3 = TABLE2.COL3 OR TABLE1.COL4 = TABLE2.COL4))"
df_request = spark.read.jdbc(url=url,table=sql_request,properties=db_properties)

希望这能有所帮助

你可以试试这个。

from pyspark.sql.functions import max
table1.select(table1.COL1)
.where(table1.COL2 == table2.select(max(table2.COL2).alias('MAX_COL2'))
.where((table1.COL3 == table2.COL3) | (table1.COL4 == table2.COL4)).collect().head().MAX_COL2).show()

希望这能有所帮助。

最新更新