檢查您輸入dataframe
和輸出dataframe
,下面可能是您的解決方案。
import org.apache.spark.sql.functions._
df.withColumn("a", lit("a")).join(broadcast(df.select(lit("a"), sum("count").as("sum"))), Seq("a"))
.select($"Code", $"count", ($"count"/$"sum").as("average"), (($"count"/$"sum")*100).as("*100"))
你應該得到你想要的輸出
+----+-----+-------------------+------------------+
|Code|count|average |*100 |
+----+-----+-------------------+------------------+
|58 |926 |0.5402567094515752 |54.02567094515752 |
|108 |438 |0.2555425904317386 |25.55425904317386 |
|7 |176 |0.10268378063010501|10.268378063010502|
|64 |174 |0.10151691948658109|10.15169194865811 |
+----+-----+-------------------+------------------+
說明
兩個dataframe
s爲join
ED和所需的列select
版
第一數據幀是df.withColumn("a", lit("a"))
和第二個數據幀是df.select(lit("a"), sum("count").as("sum"))
。他們與共同的列a
加入。最後選擇重要的專欄。
我希望答案是有幫助的讓你最終所需要的數據幀
可否請你添加一些你一起玩線上遊戲到目前爲止的代碼示例? – Pavel
我正在使用..... groupBy(「Code」)。agg(count(「Code」)from large data file and I am results results like the table Original data。現在我想計算每個計數值的百分比作爲顯示在'計數'列 –
請分享您使用的代碼示例,即使其完全錯誤,這將幫助人們瞭解問題並給您建議等 – Pavel