2017-12-28 18 views
0

Spark-SQLの新機能です。私は、SQLスパークSpark Scalaで行データを列に転記/ピボットする方法はありますか?

を助けてください、私はこれをacheiveすることはできませんよ、次の

Company X-type Y-type Z-type 
A  done done done 
B  pending done pending 
C  done done pending 

のように表示させたいのです。この

Company Type Status 
A  X done 
A  Y done 
A  Z done 
C  X done 
C  Y done 
B  Y done 

のようなスパークデータフレーム内の情報をされてい

答えて

0

groupby会社を入力してから、pivotの機能をタイプここ

は単純な例です

import org.apache.spark.sql.functions._ 

val df = spark.sparkContext.parallelize(Seq(
     ("A", "X", "done"), 
     ("A", "Y", "done"), 
     ("A", "Z", "done"), 
     ("C", "X", "done"), 
     ("C", "Y", "done"), 
     ("B", "Y", "done") 
    )).toDF("Company", "Type", "Status") 

val result = df.groupBy("Company") 
    .pivot("Type") 
    .agg(expr("coalesce(first(Status), \"pending\")")) 

result.show() 

出力:

+-------+-------+----+-------+ 
|Company|  X| Y|  Z| 
+-------+-------+----+-------+ 
|  B|pending|done|pending| 
|  C| done|done|pending| 
|  A| done|done| done| 
+-------+-------+----+-------+ 

後で列の名前を変更することができます。

希望すると便利です。

関連する問題