我有四元数的数据,而且随着四分之一的增长,数据也在动态增长-
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当季度数减少时,我每次都手工编辑查询,并尝试按如下所示将查询转接-
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,或者是否有任何建议来执行它?
谢谢你的帮助
发布于 2022-02-16 23:00:26
如果这样做对您来说是可行的,那么您可以很容易地使用Dataset API执行这种枢轴操作。
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,惟一的方法是动态地构建它。
https://stackoverflow.com/questions/71142397
复制相似问题