2017-08-10 4 views
0

データフレームに条件を適用するにはどうすればいいですか?たとえば、ある列にグループ化し、特定の条件に基づいて列の個別の値を数える必要があります。これは複数の列の条件ですデータフレーム上の集計を行う方法

私は以下の方法で試しました。どうすればいいですか?

case class testRdd(name:String,id:Int,price:Int) 
val Cols = testRdd.toDF().groupBy("id").agg(countDistinct("name").when(col("price")>0,1).otherwise(0) 

これはうまくいかない、または何かのようにする方法はありますか?事前のおかげで

testRdd.toDF().groupBy("id").agg(if(col("price")>0)countDistinct("name")) 

答えて

0

testRDD.select( "名前"、 "ID")。($ "価格"> 0).distinct.groupBy($ "ID")。AGG(カウント( "名前" ))。ここで

0

を表示1列に私はこれを行うことができ、私は条件に適用する複数の列を持っている、すなわちグループに

df.groupBy($"id",when($"price">0,true).otherwise(false).as("positive_price")) 
.agg(
    countDistinct($"name") 
) 
.where($"positive_price") 
.show 
+0

を追加ブール列を導入し、ロビンの答え@に別のアプローチであるが、そこに列を追加することはできません。複数の列に適用する方法はありますか – Babu

関連する問題