2017-11-22 17 views
0

私は大きなデータセットを持ち、このコードを使用して、さまざまな製品と各製品の異なるモデルをグループ化します。グループと異なる製品モデルのパーセンテージを計算

val tt2 = dTestSample1.groupBy("Product", "model") 
         .agg(count("Product") as "countItems") 
         .withColumn("percentage", (col("countItems")/sum("countItems").over())* 100) 
         .sort("Product") 

これまでのところ、結果は正確であるin this tableです。

いずれにしても、製品のすべてのモデルのパーセンテージを計算できるようにコードを改善できますか?

this tableというアイデアを明確にするために、例として取り上げることができます。

答えて

0

あなたは窓関数を探しているようですね。

val winSpec = Window.partitionBy("product") 
df.withColumn("totalPerProduct", sum("countItems").over(winSpec) 

次に、それ以降は簡単にパーセンテージを計算できます。

+0

ありがとうございました。これはまさに私が探していたものです! –

関連する問題