PySpark - добавление столбца для подсчета (*) - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть скрипт ниже (я удалил все имена столбцов и т. Д., Чтобы было проще увидеть, что я делаю на высоком уровне - это было очень грязно !!)

Мне нужнодобавить столбец, который является эквивалентом count (*) в SQL.

Так что, если я сгруппировал использование пользователей по доменам, я мог бы увидеть следующее - где количество - это число записей, которые соответствуют всем предыдущим столбцам conditiosn.

domain.co.uk / UKПользователь 32433 domain.co.uk/home EU Пользователь 43464 и т.д.!

vpx_cont_filter = vpx_data\
        .coalesce(1000)\
        .join(....)\
        .select(....)\
        .groupBy(....)\
        .agg(
           ....
            )\
        .select(....)

1 Ответ

0 голосов
/ 24 сентября 2018

Вы имеете в виду, что в вашей аггре вы хотите добавить столбец, который подсчитывает все вхождения для каждого groupBy?

Вы можете добавить это тогда:

.agg(
  F.count(F.lit(1)).alias("total_count"),
  ...
)

Кстати,Я не думаю, что вы вынуждены использовать F.lit (1) .В исходном коде Spark может быть случай совпадения, если вместо F.lit (1)

// Turn count(*) into count(1)
  case s: Star => Count(Literal(1))
  case _ => Count(e.expr)

So F.count ("*" указана звезда)) также будет работать, я думаю

PS: Я использую F. , потому что я предположил, что вы импортировали пакет функций, напримерэто

from pyspark.sql import functions as F
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...