Объединяйте строки из одной пары столбцов в другую

#scala #apache-spark

Вопрос:

Вот ссылка на пример того, чего я хочу достичь: https://community.powerbi.com/t5/Desktop/Append-Rows-using-Another-columns/m-p/401836. По сути, мне нужно объединить все строки пары столбцов в другую пару столбцов. Как я могу сделать это в Spark Scala?

Ввод

введите описание изображения здесь

Выход

введите описание изображения здесь

Ответ №1:

Поправьте меня, если я ошибаюсь, но я понимаю, что у вас есть фрейм данных с 4 столбцами, и вы хотите, чтобы два из них были в предыдущих двух столбцах, верно?

Например, с этим вводом (только две строки для простоты)

 df.show
 ---- ---------- ----------- ---------- --------- 
|name|     date1|      cost1|     date2|    cost2|
 ---- ---------- ----------- ---------- --------- 
|   A|2013-03-25|19923245.06|          |         |
|   B|2015-06-04| 4104660.00|2017-10-16|392073.48|
 ---- ---------- ----------- ---------- --------- 
 

С помощью всего нескольких вариантов выбора и объединения вы можете достичь того, чего хотите

 df.select("name", "date1", "cost1")
  .union(df.select("name", "date2", "cost2"))
  .withColumnRenamed("date1", "date")
  .withColumnRenamed("cost1", "cost")

 ---- ---------- ----------- 
|name|      date|       cost|
 ---- ---------- ----------- 
|   A|2013-03-25|19923245.06|
|   B|2015-06-04| 4104660.00|
|   A|          |           |
|   B|2017-10-16|  392073.48|
 ---- ---------- -----------