Группировка записей с использованием искрового запроса - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу сгруппировать записи и получить общий счет этого как вывод из следующих данных:

OccDate     Mne 
19-09-2018  A_sub1_123             
19-09-2018  A_sub2_123
19-09-2018  A_sub1_345
15-09-2018  A_sub1_123
15-09-2018  A_sub1_234
16-09-2018  A_sub2_234

Желаемый вывод:

 Date        subsm   cnt
    19-09-2018   sub1    2     
    19-09-2018   sub2    1
    16-09-2018   sub2    1
    15-09-2018   sub1    2

Я пытался следующий запрос:

RDD = sparkAnalytics.sql("SELECT CONCAT(day(OccDate),'-',month(OccDate),'-',year(OccDate)) AS Date,Mne,Count(Mne) AS cnt FROM fs WHERE Mne LIKE '%%' GROUP BY Date,Mne ORDER BY Date DESC")

Но я не получаю желаемый результат.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Попробуйте это на dataframe

df.groupBy(col("occdate").alias("date"),split(col("mne"),"_")[1].alias("subsm")).agg(count("*").alias("cnt"))
0 голосов
/ 05 февраля 2020

Поскольку вы не добавили ошибку в свой вопрос.

Полагаю, вы определили SparkSession как "sparkAnalytics" вместо "spark" в своем коде. Если нет, пожалуйста, проверьте это.

Далее в вашем запросе есть ошибка, то есть вместо «группировать по дате» нужно написать «группировать по CONCAT (день (OccDate), '-', месяц (OccDate), '-' , год (OccDate)) "

...