@NogerbekNurzhan

Работа с DataFrame в Spark?

Здравствуйте, товарищи! Помогите пожалуйста разобраться.

Предположим в первом DataFrame хранится время обращение пользователей в колл-центр.

+---------+-------------------+
|USER_NAME|       REQUEST_DATE|
+---------+-------------------+
|     Mark|2018-02-20 00:00:00|
|     Alex|2018-03-01 00:00:00|
|      Bob|2018-03-01 00:00:00|
|     Mark|2018-07-01 00:00:00|
|     Kate|2018-07-01 00:00:00|
+---------+-------------------+


Во втором DataFrame хранится информация о том является ли человек членом организации. OUT означает, что пользователь ушел из организации. IN означает, что пользователь пришел в организацию. "START_DATE" и "END_DATE" означают начало и конец соответствующего процесса. К примеру можно увидеть, что Alex ушел из организации "2018-01-01 00:00:00" числа, а процесс этот закончился "2018-02-01 00:00:00". При этом можно заметить, что один пользователь может придти и уйти из организации в разные периоды как Mark.

+---------+---------------------+---------------------+--------+
|NAME     | START_DATE          | END_DATE            | STATUS |
+---------+---------------------+---------------------+--------+
|     Alex| 2018-01-01 00:00:00 | 2018-02-01 00:00:00 | OUT    |
|      Bob| 2018-02-01 00:00:00 | 2018-02-05 00:00:00 | IN     |
|     Mark| 2018-02-01 00:00:00 | 2018-03-01 00:00:00 | IN     |
|     Mark| 2018-05-01 00:00:00 | 2018-08-01 00:00:00 | OUT    |
|    Meggy| 2018-02-01 00:00:00 | 2018-02-01 00:00:00 | OUT    |
+----------+--------------------+---------------------+--------+


Пытаюсь получить в финале такой DataFrame. В нем должны быть все записи из первого DataFrame плюс колонка с признаком того является ли этот человек на момент обращения (REQUEST_DATE) членом организации или нет.

+---------+-------------------+----------------+
|USER_NAME|       REQUEST_DATE| USER_STATUS    |
+---------+-------------------+----------------+
|     Mark|2018-02-20 00:00:00| Our user       |
|     Alex|2018-03-01 00:00:00| Not our user   |
|      Bob|2018-03-01 00:00:00| Our user       |
|     Mark|2018-07-01 00:00:00| Not our user   |
|     Kate|2018-07-01 00:00:00| No Information |
+---------+-------------------+----------------+


val df1: DataFrame  = Seq(
    ("Mark", "2018-02-20 00:00:00"),
    ("Alex", "2018-03-01 00:00:00"),
    ("Bob", "2018-03-01 00:00:00"),
    ("Mark", "2018-07-01 00:00:00"),
    ("Kate", "2018-07-01 00:00:00")
).toDF("USER_NAME", "REQUEST_DATE")

df1.show()

val df2: DataFrame  = Seq(
    ("Alex", "2018-01-01 00:00:00", "2018-02-01 00:00:00", "OUT"),
    ("Bob", "2018-02-01 00:00:00", "2018-02-05 00:00:00", "IN"),
    ("Mark", "2018-02-01 00:00:00", "2018-03-01 00:00:00", "IN"),
    ("Mark", "2018-05-01 00:00:00", "2018-08-01 00:00:00", "OUT"),
    ("Meggy", "2018-02-01 00:00:00", "2018-02-01 00:00:00", "OUT")
).toDF("NAME", "START_DATE", "END_DATE", "STATUS")

df2.show()
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Первый ОФД Нижний Новгород
от 60 000 до 110 000 руб.
MFMS Москва
от 150 000 до 300 000 руб.
ГРАН Software Москва
от 70 000 руб.
19 июл. 2019, в 08:49
35000 руб./за проект
19 июл. 2019, в 07:57
65000 руб./за проект
19 июл. 2019, в 06:36
15000 руб./за проект