scala> df
.groupBy($"tdate") // Grouping data based on tdate column.
.pivot("ttype",Seq("cheque","draft")) // pivot based on ttype and "draft","cheque" are new column name
.agg(first("tamt")) // aggregation by "tamt" column.
.show(false)
+----------+------+-----+
|tdate |cheque|draft|
+----------+------+-----+
|2020-10-18|7000 |null |
|2020-10-15|null |5000 |
+----------+------+-----+
2条答案
按热度按时间4uqofj5v1#
如果您知道新列的所有名称,则可以通过手动添加列来获得相同的结果,而无需使用pivot:
由于此解决方案不会触发洗牌,因此处理速度将比使用pivot更快。
如果您不知道列的名称,则可以将其泛化。但是,在这种情况下,您应该进行基准测试,以检查pivot是否更具性能:
esyap4oy2#
使用
groupBy
,pivot
&agg
功能。检查以下代码。添加了内联注解。