Spark Agg, чтобы собрать один список для нескольких столбцов - PullRequest
0 голосов
/ 19 сентября 2018

Вот мой текущий код:

pipe_exec_df_final_grouped = pipe_exec_df_final.groupBy("application_id").agg(collect_list("table_name").alias("tables"))

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

1|[a,b,c,d]
2|[e,f,g,h]

Однако я также хотел бы сохранить еще один столбец, присоединенный к агрегации (давайте назовем его именем столбца 'status').Таким образом, мой новый вывод будет:

1|[[a,pass],[b,fail],[c,fail],[d,pass]]
...

Я пытался collect_list("table_name, status"), однако collect_list принимает только одно имя столбца.Как я могу выполнить то, что я пытаюсь сделать?

1 Ответ

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

Используйте array, чтобы сначала собрать столбцы в столбец массива, затем применить collect_list:

df.groupBy(...).agg(collect_list(array("table_name", "status")))
...