Как вычислить дату перекрытия в pyspark

#python #apache-spark #pyspark #apache-spark-sql

#python #apache-spark #pyspark #apache-spark-sql

Вопрос:

У меня есть данные о пользователях, которые работали с несколькими компаниями.Некоторые пользователи, которые работали в нескольких компаниях одновременно. Как объединить общий опыт без учета опыта перекрытия. Я просмотрел некоторые ссылки, по которым можно найти правильные решения.Любая помощь будет оценена.

ДАННЫЕ EMP CSV

 fullName,Experience_datesEmployeed,Experience_expcompany,Experience_expduraation, Experience_position
David,Feb 1999 - Sep 2001, Foothill,2 yrs 8 mos, Marketing Assoicate
David,1994 - 1997, abc,3 yrs,Senior Auditor
David,Jun 2020 - Present,   Fellows INC,3 mos,Director Board
David,2017 - Jun 2019,     Fellows INC ,2 yrs,Fellow - Class 22
David,Sep 2001 - Present, The John D.,19 yrs, Manager
  

Ожидаемый результат:

 FullName,Total_Experience

David,24.8 yrs
  

Комментарии:

1. Я думаю, вам нужно будет создать UDAF (определяемую пользователем агрегатную функцию), поскольку требования очень специфические. Вам нужно отсортировать все Experience_dates для пользователя на основе end_date ( почему? проблема с поиском non-overlapping intervals ) затем выполните что-то вроде суммирования текущего окна, например (exprience_a experience_b = end_b — start_a, если они перекрываются еще (end_a — start_a) (end_b — start_b)!

2. пожалуйста, любую справочную ссылку или псевдокод