Python 如何在pyspark dataframe中编写带有“not in”的sql嵌套查询?

Python 如何在pyspark dataframe中编写带有“not in”的sql嵌套查询?,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我有一个要转换为pyspark的sql查询: 从表格输出中选择*,其中cct\U id不在表格输出中,从df\U hr\U excl中选择* 伪代码: Table_output=Table_output.select(col("cct_id")).exceptAll(df_hr_excl.select("cct_id")) or col("cct_id").isin(df_hr_excl.select("cct_id&quo

我有一个要转换为pyspark的sql查询:

从表格输出中选择*,其中cct\U id不在表格输出中,从df\U hr\U excl中选择* 伪代码:

Table_output=Table_output.select(col("cct_id")).exceptAll(df_hr_excl.select("cct_id")) or 
col("cct_id").isin(df_hr_excl.select("cct_id"))

where子句中具有NOT in或NOT EXISTS的相关子查询可以使用left反联接写入:

Table_output = Table_output.join(df_hr_excl, ["cct_id"], "left_anti")
根据您的评论,如果您的子查询中有一个条件,那么您可以将其放入join条件中。例如:

Table_output = Table_output.alias("a").join(df_hr_excl.alias("b"), (F.col("a.x") > F.col("b.y")) & (F.col("a.id") == F.col("b.id")), "left_anti")

where子句中具有NOT in或NOT EXISTS的相关子查询可以使用left反联接写入:

Table_output = Table_output.join(df_hr_excl, ["cct_id"], "left_anti")
根据您的评论,如果您的子查询中有一个条件,那么您可以将其放入join条件中。例如:

Table_output = Table_output.alias("a").join(df_hr_excl.alias("b"), (F.col("a.x") > F.col("b.y")) & (F.col("a.id") == F.col("b.id")), "left_anti")

抱歉@Blackishop不知何故或有人删除了所有评论。如果可能的话,请您在上面的答案中重写解决方案。将非常有帮助@阿拉斯泰尔补充了答案;抱歉@Blackishop不知何故或有人删除了所有评论。如果可能的话,请您在上面的答案中重写解决方案。将非常有帮助@阿拉斯泰尔补充了答案;