如何在Spark SQL中对多个列进行透视?

如何在Spark SQL中对多个列进行透视?,第1张

如何在Spark SQL中对多个列进行透视?

这是涉及单个枢轴的非UDF方法(因此,只需进行一次列扫描即可识别所有唯一日期)。

dff = mydf.groupBy('id').pivot('day').agg(F.first('price').alias('price'),F.first('units').alias('unit'))

结果如下(对不匹配的排序和命名表示歉意):

+---+-------+------+-------+------+-------+------+-------+------+    | id|1_price|1_unit|2_price|2_unit|3_price|3_unit|4_price|4_unit|+---+-------+------+-------+------+-------+------+-------+------+|100|     23|    10|     45|    11|     67|    12|     78|    13||101|     23|    10|     45|    13|     67|    14|     78|    15||102|     23|    10|     45|    11|     67|    16|     78|    18|+---+-------+------+-------+------+-------+------+-------+------+

经过一天的调整后,我们只在

price
unit
列上进行汇总。

如果需要命名,

dff.select([F.col(c).name('_'.join(x for x in c.split('_')[::-1])) for c in dff.columns]).show()+---+-------+------+-------+------+-------+------+-------+------+| id|price_1|unit_1|price_2|unit_2|price_3|unit_3|price_4|unit_4|+---+-------+------+-------+------+-------+------+-------+------+|100|     23|    10|     45|    11|     67|    12|     78|    13||101|     23|    10|     45|    13|     67|    14|     78|    15||102|     23|    10|     45|    11|     67|    16|     78|    18|+---+-------+------+-------+------+-------+------+-------+------+


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5647942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存