У меня есть сценарий ниже (я удалил все имена столбцов и т. д., Чтобы было легче увидеть, что я делаю на высоком уровне - это было очень беспорядочно !!)
Мне нужно добавить столбец, эквивалентный count (*) в SQL.
Итак, если я сгруппировал использование пользователей по доменам, я мог бы увидеть следующее: где счетчик - это количество записей, которые соответствуют всем предыдущим условиям столбца.
domain.co.uk/ Пользователь из Великобритании 32433 domain.co.uk/home Пользователь из ЕС 43464 так далее...
Я уверен, что раньше об этом спрашивали где-то в Stackoverflow, но я внимательно осмотрелся и не нашел на него никакой ссылки!
vpx_cont_filter = vpx_data\
.coalesce(1000)\
.join(....)\
.select(....)\
.groupBy(....)\
.agg(
....
)\
.select(....)





Вы имеете в виду, что в своем агрегации вы хотите добавить столбец, в котором будут учитываться все вхождения для каждой groupBy?
Вы можете добавить это тогда:
.agg(
F.count(F.lit(1)).alias("total_count"),
...
)
Кстати, я не думаю, что вас заставляют использовать Ф. лит (1). В исходном коде Spark будет регистр совпадения, если вы укажете звездочку вместо Ф. лит (1)
// Turn count(*) into count(1)
case s: Star => Count(Literal(1))
case _ => Count(e.expr)
Так что F.count ("*") тоже будет работать, я думаю
PS: Я использую Ф., потому что я предполагал, что вы импортировали пакет функций, подобный этому
from pyspark.sql import functions as F