首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态数据透视/转置行到蜂巢/火花中的列

动态数据透视/转置行到蜂巢/火花中的列
EN

Stack Overflow用户
提问于 2022-02-16 13:03:32
回答 1查看 441关注 0票数 0

我有四元数的数据,而且随着四分之一的增长,数据也在动态增长-

代码语言:javascript
复制
qtr       dimvalue  percentage
FY2019-Q1   XYZ         15
FY2019-Q1   ABC         80
FY2019-Q1   PPP         5
FY2019-Q2   XYZ         10
FY2019-Q2   ABC         70
FY2019-Q2   PPP         20

当季度数减少时,我每次都手工编辑查询,并尝试按如下所示将查询转接-

代码语言:javascript
复制
SELECT dim_value,SUM(Quater_1) as Quater_1,SUM(Quater_2) as Quater_2 from
(
SELECT dim_value,
CASE WHEN qtr='FY2019-Q1' THEN percentage END AS Quater_1,
CASE WHEN qtr='FY2019-Q2' THEN percentage END AS Quater_2 FROM 
( select * from schema.table where qtr in ('FY2019-Q1','FY2019-Q2'))t2 order by dim_value
)t1 group by dim_value;


dimvalue   Quater_1   Quater_2
XYZ          15         10
ABC          80         70 
PPP          5          20

但是,我的查询是,如何以动态的方式和更健壮的方式激活它,将行转换为列,并记住不断增长的四元数,并且随着四元数的增长,还有正确的四元数列名。

总之,我正在寻找如何使用一个更动态的查询来执行这个任务,不管是使用Hive还是Spark,或者是否有任何建议来执行它?

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-16 23:00:26

如果这样做对您来说是可行的,那么您可以很容易地使用Dataset API执行这种枢轴操作。

代码语言:javascript
复制
spark.table("schema.table").groupBy("dimvalue").pivot("qtr").sum("percentage").show

+--------+---------+---------+
|dimvalue|FY2019-Q1|FY2019-Q2|
+--------+---------+---------+
|     PPP|        5|       20|
|     XYZ|       15|       10|
|     ABC|       80|       70|
+--------+---------+---------+

使用SQL,惟一的方法是动态地构建它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71142397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档