как получить доступ к строкам и иметь возможность перемещаться вперед и назад в спрей-фреймах с использованием scala - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь решить следующую проблему:

входной фрейм данных:

+------+------+------------+
|emp   |Group |Spouse      |
+------+------+------------+
|John  |L1    |Dana        |
|Mary  |L1    |Rick        |
|Harry |L3    |Dana        |
|Linda |L3    |Harry       |
|Jim   |L3    |Mary        |
+------+------+------------+

Логика: супруг работника не должен принадлежать к той же группе, что и работник (должен удалить строку этого супруга из списка)

выходной кадр данных:

+------+------+------------+
|Emp   |Group |Spouse      |
+------+------+------------+
|John  |L1    |Dana        |
|Mary  |L1    |Rick        |
|Linda |L3    |Harry       |
|Jim   |L3    |Mary        |
+------+------+------------+

Кто-нибудь, пожалуйста, помогите мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Соединение левой части кадра данных с самим собой на основе столбцов супруга и группы, затем фильтрация ненулевого содержимого в объединенной DF и удаление объединенной DF, если не требуется. Примерно так:

df.join(df.select($"emp".as("s_e"), $"Spouse".as("s_s"), $"Group".as("s_g")),
    $"emp" <=> $"s_s" && $"Group" <=> $"s_g", "left").
  filter($"s_e".isNull).
  drop($"s_e", $"s_s", $"s_g")
0 голосов
/ 27 августа 2018

Будет ли это решением для вас?

df.createOrReplaceTempView("empl")

sql("select a.emp, a.Group, a.Spouse from empl a where exists (select 1 from empl b where a.Spouse = b.emp and a.Group <> b.Group)").show
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...