2017-01-31 2 views
0

У меня есть эта ситуация в Спаркискра: транспонировать больше строк на одной строке с более колонке

+-----+-----+-----+----------+-----------+-----------+ 
|month|years|id | category|sum(amount)|avg(amount)| 
+-----+-----+-----+----------+-----------+-----------+ 
| 1 | 2015| id_1|  A | 10000 | 2000 | 
| 1 | 2015| id_1|  B | 1000 | 100 | 
| 1 | 2015| id_1|  C | 2000 | 1000 | 
+-----+-----+-----+----------+-----------+-----------+ 

, и я хотел бы получить это:

+-----------------+-----------------------+-----------------------------------------------+ 
|     |  category_A  |  category_B  |  category_C  | 
+-----+-----+-----+-----------+-----------+-----------+-----------+-----------+-----------+ 
|month|years|id |sum(amount)|avg(amount)|sum(amount)|avg(amount)|sum(amount)|avg(amount)| 
+-----+-----+-----+-----------+-----------+-----------+-----------+-----------+-----------+ 
| 1 | 2015| id_1| 10000 | 2000 | 1000 | 100 | 2000 | 1000 | 
+-----+-----+-----+-----------+-----------+-----------+-----------+-----------+-----------+ 

Возможно ли это?

ответ

0

Я нашел это решение, используя dataframe и стержень:

df 
    .groupBy($"month",$"years",$"id") 
    .pivot("category") 
    .agg(sum($"amount"),avg($"amount")) 

Можно решение с РДУ?

Смежные вопросы