Sql 在spark中将行转换为列
我的日期如下:-我必须按列显示Sql 在spark中将行转换为列,sql,apache-spark,hive,apache-spark-sql,Sql,Apache Spark,Hive,Apache Spark Sql,我的日期如下:-我必须按列显示年\月日期。我应该如何使用这个,我是新的火花 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_m
年\月
日期。我应该如何使用这个,我是新的火花
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..
如果您提供预期的数据输出,这将很容易。您可以使用pivot on spark DataFrame我尝试使用以下代码:-这与您的类似吗?val a=spark.sql(“选择sum(实际调用次数)作为实际调用次数,调用组合层,从ph_com的年/月调用组合层。dm_rep_customer按年/月调用组,调用组合层”)val pivotDF=a.groupBy(“call\u portfolio\u tier”).pivot(“year\u month”).sum(“实际调用数”)pivotDF.show()我不理解您使用这个-.agg(concat\u ws(“”),col\u list(col(“sum”))的逻辑。drop(“1”)@SanskarSuman大多数逻辑都是一样的,只需对val pivotDF=a.groupBy(“call_portfolio_tier”).pivot(“year_month”).agg(sum(“actual_calls_count”)@SanskarSuman我使用过agg(concat_ws(“),collect_list(col(“sum”)))。drop(“1”),实际上我正在做的是插入一列,其值为常量“1”这样我就可以按完整的数据帧进行分组。在该分组中,我使用collect_list收集所有相应的和,collect_list返回字符列表,我使用concat_ws()将其转换为字符串,最后删除新添加的列
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 |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+