Получить общее количество строк в окне - PullRequest
1 голос
/ 13 марта 2020

В PySpark, возможно ли получить общее количество строк в конкретном окне?

Сейчас я использую:

w = Window.partitionBy("column_to_partition_by")

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

Однако это дает мне только добавочный счетчик строк. Что мне нужно, это общее количество строк в этом конкретном разделе окна. Кто-нибудь может сказать мне команду для этого?

1 Ответ

1 голос
/ 13 марта 2020

Я думаю, вам нужно добавить rowsBetween с вашим предложением окна.

Example:

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 по умолчанию имеет значение unboundedPreceeding и currentRow.

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|
#+---+---+-----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...