выбрать из первых вхождений до последних значений в столбце массива в pyspark df - PullRequest
0 голосов
/ 29 мая 2019

У меня есть проблема, в которой приходится искать первое вхождение «Employee_ID» в «Mapped_Project_ID», необходимо выбрать значения в массиве до последнего значения из первого совпадения вхождений

У меня есть один кадр данных, как показано ниже:

Employee_Name|Employee_ID|Mapped_Project_ID
Name1|E101|[E101, E102, E103]
Name2|E102|[E101, E102, E103]
Name3|E103|[E101, E102, E103, E104, E105]

Я хочу получить вывод df, как показано ниже:

Employee_Name|Employee_ID|Mapped_Project_ID
Name1|E101|[E101, E102, E103]
Name2|E102|[E102, E103]
Name3|E103|[E103, E104, E105] 

Не уверен, как этого добиться.

Может ли кто-нибудь предоставить помощь по этому или логике, чтобы справиться с этим в искре без необходимости каких-либо UDF?

1 Ответ

0 голосов
/ 29 мая 2019

Получив свой фрейм данных, вы можете использовать функцию массива более высокого порядка в Spark 2.4 (см. https://docs.databricks.com/_static/notebooks/apache-spark-2.4-functions.html), чтобы отфильтровать любые значения в массиве, которые меньше значения в столбце Employee_ID, например:

myDataframe
  .selectExpr(
    "Employee_Name", 
    "Employee_ID", 
    "filter(Mapped_Project_ID, x -> x >= Employee_ID) as Mapped_Project_ID"
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...