Нужно перенести данные в 1 запись в Scala Spark - PullRequest
0 голосов
/ 24 октября 2019

Мне нужно транспонировать данные на основе причины исключения для конкретного cust_name на основе cust_name

cust_name | cust_id | cust_code | flag | reason |РМ | 10 | 001 | 1 | НЕТRM | 10 | 001 | 1 | NOT VALID DATA |

Вывод: Требуются данные в 1 Запись с несколькими причинами исключения для конкретного cust_name RM | 10 | 001 | 1 | NOT PRESENT, NOT VALID DATA

1 Ответ

0 голосов
/ 01 ноября 2019

Предполагая, что вам нужно сохранить другие идентификаторы, вы можете использовать groupBy в своем столбце DF, а затем collect_list - reason. Вот так:

val df = Seq(("RM", "10", "001","1","NOT PRESENT"),
              ("RM","10","001","1","NOT VALID DATA"))
        .toDF("cust_name","cust_id","cust_code","flag","reason")

import org.apache.spark.sql.functions.collect_list

df.groupBy("cust_name", "cust_id", "cust_code", "flag") // group by your keys
  .agg(collect_list('reason) alias "reason_list") 
  .show(truncate = false)

Вывод:

+---------+-------+---------+----+-----------------------------+
|cust_name|cust_id|cust_code|flag|reason_list                  |
+---------+-------+---------+----+-----------------------------+
|RM       |10     |001      |1   |[NOT PRESENT, NOT VALID DATA]|
+---------+-------+---------+----+-----------------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...