считать и различать счет без группового использования с помощью PySpark - PullRequest
0 голосов
/ 05 июня 2018

У меня есть фрейм данных (testdf), и я хотел бы получить счетчик и отчетливый счетчик для столбца (memid), где другой столбец (booking / rental) не является нулевым или не пустым (т.е."")

testdf:

memid   booking  rental
100        Y 
100
120        Y
100        Y       Y

Ожидаемый результат: (для столбца бронирования не пусто / не пусто)

count(memid)  count(distinct memid)
      3                      2

Если это был SQL:

Select count(memid), count(distinct memid) from mydf 
where booking is not null and booking!= ""

В PySpark:

mydf.filter("booking!=''").groupBy('booking').agg(count("patid"), countDistinct("patid"))

Но я просто хочу, чтобы общий счетчик не сгруппировался по ..

1 Ответ

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

Вы можете просто удалить GroupBy и использовать agg напрямую.
Вот так.

from pyspark.sql import functions as F 
mydf=mydf.filter("booking!=''").agg(F.count("patid"), F.countDistinct("patid"))
...