如何执行 T-SQL 操作 UPDATE ...设置。。。在 Pyspark 中?

How to do T-SQL operations UPDATE ... SET ... in pyspark?

提问人:ByUnal 提问时间:11/16/2023 最后编辑:Thom AByUnal 更新时间:11/17/2023 访问量:37

问:

我有需要在pyspark中编码的T-SQL查询。但是,Pyspark 并不支持所有 SQL 操作,因此您必须相应地构建自己的逻辑。我已经设法转换了许多查询,但我无法确定如何在Pyspark中执行此操作。

下面是 T-SQL 查询:Here is the T-SQL query:

UPDATE #TERT A SET TARIH=B.DTARIH
FROM KMLK B
WHERE A.NO=B.NO
AND A.TARIH=''
AND B.DURUM=1

你能帮我制作更新吗?pyspark 中的 SET 逻辑?

python t-sql pyspark apache-spark-sql

评论

0赞 Thom A 11/16/2023
我打算建议将此 qusetion 作为 Spark SQL 中的重复更新查询,但 2 个答案说它可能仅作为链接,因此没有用。但是,它们确实链接到相关文档
0赞 ByUnal 11/17/2023
@ThomA但是,如果我们的表不是 Delta 格式怎么办:)实际上并非如此。SET在这里的作用是什么?也许我们可以通过过滤后覆盖 DataFrame 来实现更新
0赞 Thom A 11/17/2023
不幸的是,我不熟悉 PySpark。我只是看了看问题,立即发现了;你的问题并不能证明你已经研究过这个问题。如果无法实现该解决方案,则应编辑问题以解释原因以及方案是什么。

答:

-1赞 Danish Khan 11/16/2023 #1

我会建议你,你应该在你想要改变的地方给出一个参考 喜欢

更新 *tablename set name=“Danish”,其中 Address=“..................” 在这里,我们给出了更改名称的参考,地址是这个

评论

0赞 Community 11/17/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 ByUnal 11/17/2023 #2

我想我已经找到了解决方案。正如你们大多数人所知道的,可能有几种方法可以在 SQL 中编写相同的逻辑。从这个意义上说,我们可以找到一种在Pyspark中以不同的方式进行UPDATE-SET操作的方法。“SET”表示根据筛选器(或 Where 条件)将一个列值更改为另一个列值,而 UPDATE 表示相应地更新相关表。所以;

## Assuming we have loaded the #TERT table into dataframe, which is tert_df in that case. Then,

tert_df = tert_df.alias("A").join(kmlk_df.alias("B"),(col("A.no") == col("B.no")))\
                            .filter((col("A.durum") != "") & (col("B.durum") == 1))\
                            .withColumn("A.tarih", col("B.dtarih")).select("A.*")

withColumn()做我猜的工作。这是相关文件。 希望它有效。