sql - 在火花中将行转换为列
问题描述
我有一个如下所示的日期:- 我必须year_month
明智地显示列。我应该如何使用它,我是新手。
scala> spark.sql("""select sum(actual_calls_count),year_month from ph_com_b_gbl_dice.dm_rep_customer_call group by year_month""")
res0: org.apache.spark.sql.DataFrame = [sum(actual_calls_count): bigint, year_month: string]
scala> res0.show
+-----------------------+----------+
|sum(actual_calls_count)|year_month|
+-----------------------+----------+
| 1| 2019-10|
| 3693| 2018-10|
| 7| 2019-11|
| 32| 2017-10|
| 94| 2019-03|
| 10527| 2018-06|
| 4774| 2017-05|
| 1279| 2017-11|
| 331982| 2018-03|
| 315767| 2018-02|
| 7097| 2017-03|
| 8| 2017-08|
| 3| 2019-07|
| 3136| 2017-06|
| 6088| 2017-02|
| 6344| 2017-04|
| 223426| 2018-05|
| 9819| 2018-08|
| 1| 2017-07|
| 68| 2019-05|
+-----------------------+----------+
only showing top 20 rows
我的输出应该是这样的: -
sum(actual_calls_count)|year_month1 | year_month2 | year_month3 and so on..
解决方案
scala> df.groupBy(lit(1)).pivot(col("year_month")).agg(concat_ws("",collect_list(col("sum")))).drop("1").show(false)
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|2017-02|2017-03|2017-04|2017-05|2017-06|2017-07|2017-08|2017-10|2017-11|2018-02|2018-03|2018-05|2018-06|2018-08|2018-10|2019-03|2019-05|2019-07|2019-10|2019-11|
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|6088 |7097 |6344 |4774 |3136 |1 |8 |32 |1279 |315767 |331982 |223426 |10527 |9819 |3693 |94 |68 |3 |1 |7 |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
推荐阅读
- android - Xamarin Essentials - Pixel 3 上的 Connectivity.NetworkAccess 不正确?
- android - 嵌套导航时,导航的后退堆栈丢失
- cmake - 如何使用 g++ 和 Cmake 运行 c++ 文件?
- django - Visual Studio:调试时如何忽略已知异常?
- javascript - 如何获取表单中元素的 id?
- reactjs - 方法未检索到更新的状态
- javascript - 正确为什么要在 React Native 中将带参数的函数绑定到子组件
- javascript - 如何在 Bokeh 中使用 customjs 动态更新下拉菜单选项
- reverse - 如何生成康威生命游戏算法的先前状态?
- php - 如何在 SOAP 请求 PHP 中附加文件