这是我当前的代码:
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]
但是,我还想保留另一列附加到该聚集(让我们将其称为“状态”列名称)。所以我的新输出将是:
1|[[a,pass],[b,fail],[c,fail],[d,pass]]
...
我尝试了collect_list("table_name, status")
,但是collect_list
仅使用一个列名。我该如何完成我想做的事情?
答案 0 :(得分:5)
首先使用array
将列收集到数组列中,然后应用collect_list
:
df.groupBy(...).agg(collect_list(array("table_name", "status")))