我有 Quaterly 基礎資料,并且隨著 Quater 的增長,資料會不斷增長-
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
但是我的查詢是如何以動態方式和更強大的方式將行轉換為列,并牢記不斷增長的 quater,并且隨著 Quater 的增長還有適當的 Quaterwise 列名。
總而言之,我正在尋找如何使用更動態的查詢來執行此操作,無論是使用 Hive 還是 Spark-SQL,還是有任何建議來執行它?
謝謝您的幫助
uj5u.com熱心網友回復:
如果這對您可行,您可以使用 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://www.uj5u.com/net/429926.html
