我正在使用Spark和PySpark.我试图实现相当于以下伪代码的结果:
df = df.withColumn('new_column',
IF fruit1 == fruit2 THEN 1, ELSE 0. IF fruit1 IS NULL OR fruit2 IS NULL 3.)
Run Code Online (Sandbox Code Playgroud)
我试图在PySpark中这样做,但我不确定语法.有什么指针吗?我调查expr()但无法让它工作.
请注意,这df是一个pyspark.sql.dataframe.DataFrame.
我试图运行使用EXIST子句的查询:
select <...>
from A, B, C
where
A.FK_1 = B.PK and
A.FK_2 = C.PK and
exists (select A.ID from <subquery 1>) or
exists (select A.ID from <subquery 2>)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎不受支持.我也尝试用EXISTS一个IN子句替换该子句:
select <...>
from A, B, C
where
A.FK_1 = B.PK and
A.FK_2 = C.PK and
A.ID in (select ID from ...) or
A.ID in (select ID from ...)
Run Code Online (Sandbox Code Playgroud)
不幸的是,该IN条款似乎也没有得到支持.
有关如何编写实现所需结果的SQL查询的任何想法?我原则上可以将该WHERE条款建模为另一个条款,JOIN而第二个OR条款则可以模拟,UNION但它看起来非常笨拙.
编辑:列出一些可能的解决方案.
解决方案1
select <...>
from A, …Run Code Online (Sandbox Code Playgroud)