gpt4 book ai didi

pyspark - 获取窗口的总行数

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

在 PySpark 中,是否可以获取特定窗口中的总行数?

现在我正在使用:

w = Window.partitionBy("column_to_partition_by")

F.count(col("column_1")).over(w)

但是,这只会给我增加的行数。我需要的是该特定窗口分区中的总行数。谁能告诉我这个命令?

最佳答案

我认为您需要在窗口子句中添加 rowsBetween

示例:

df.show()
#+---+---+
#| i| j|
#+---+---+
#| 1| a|
#| 1| b|
#| 1| c|
#| 2| c|
#+---+---+

w = Window.partitionBy("i").rowsBetween(-sys.maxsize,sys.maxsize)

df.withColumn("count",count(col("j")).over(w)).show()
#+---+---+-----+
#| i| j|count|
#+---+---+-----+
#| 1| a| 3|
#| 1| b| 3|
#| 1| c| 3|
#| 2| c| 1|
#+---+---+-----+

通常当我们有 .orderBy 子句到 window 时,我们需要有 rowsBetween 需要添加,因为 orderby 子句默认为 unboundedPreceedingcurrentRow

w = Window.partitionBy("i").orderBy("j")
df.withColumn("count",count(col("j")).over(w)).show()

#incremental count
#+---+---+-----+
#| i| j|count|
#+---+---+-----+
#| 1| a| 1|
#| 1| b| 2|
#| 1| c| 3|
#| 2| c| 1|
#+---+---+-----+
w = Window.partitionBy("i").orderBy("j").rowsBetween(-sys.maxsize,sys.maxsize)
df.withColumn("count",count(col("j")).over(w)).show()

#total number of rows count
#+---+---+-----+
#| i| j|count|
#+---+---+-----+
#| 1| a| 3|
#| 1| b| 3|
#| 1| c| 3|
#| 2| c| 1|
#+---+---+-----+

关于pyspark - 获取窗口的总行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60672901/

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