gpt4 book ai didi

apache-spark - 订购 Pyspark 窗口时缺少数据

转载 作者:行者123 更新时间:2023-12-05 01:54:36 25 4
gpt4 key购买 nike

这是我当前的数据集:

from pyspark.sql import Window
import pyspark.sql.functions as psf

df = spark.createDataFrame([("2","1",1),
("3","2",2)],
schema = StructType([StructField("Data", StringType()),
StructField("Source",StringType()),
StructField("Date", IntegerType())]))


display(df.withColumn("Result",psf.collect_set("Data").over(Window.partitionBy("Source").orderBy("Date"))))

输出:

<表类="s-表"><头>数据来源<日>日期 结果<正文>211["2"]312["2","3"]

为什么在 ordered 的 Window 上使用 collect_set 函数时,Result 列的第一行中缺少值 3

我也尝试过使用 collect_list,但得到的结果相同。

我想要的输出是:

<表类="s-表"><头>数据来源<日>日期 结果<正文>211["2","3"]312["2","3"]

保留 Result 中值的顺序 - 第一个是 Date = 1,第二个是 Date = 2

最佳答案

您需要使用带有 unboundedPrecedingWindow.unboundedFollowing 的窗口:

Window.partitionBy("Source").orderBy("Date") \
.rowsBetween(Window.unboundedPreceding, Window.unboundedFollowing)

当您有 orderBy

时,默认情况下 Spark 使用 rowsBetween(Window.unboundedPreceding, Window.currentRow)

关于apache-spark - 订购 Pyspark 窗口时缺少数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70591443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com