我遇到的问题是必须在“ Mapped_Project_ID”中搜索“ Employee_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的情况下对此提供帮助或逻辑来处理此问题吗?
答案 0 :(得分:0)
一旦有了数据框,就可以使用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"
);