首页 > 解决方案 > 如何使用 spark SQL 将全名列值拆分为 3 列并删除数据之间的括号

问题描述

我正在尝试将全名分成三列,使用 spark SQL 删除括号中的值和星号作为全名、名字和姓氏。我尝试使用正则表达式并拆分,但无济于事。任何人都可以帮我处理代码片段。例子:

全名
纳亚卡,马来亚(纳亚卡)
丰田、正幸*丰田*
Suzy,Thamas *功能性*

预期输出:

全名 全名
纳亚卡,马来亚(纳亚卡) 马来亚 纳亚卡 纳亚卡·马来亚
丰田、正幸*丰田* 雅之 丰田章男 丰田正之
Suzy,Thamas *功能性* 塔马斯 苏西 苏西,托马斯

标签: apache-spark-sql

解决方案


这应该可以解决问题:

spark.sql(""" select    split ( ltrim(rtrim(regexp_replace(split(fullname, ',')[1], '[^a-zA-Z ]', ''))), ' ')[0] as FIRSTNAME,
                        ltrim(rtrim(regexp_replace(split(fullname, ',')[0], '[^a-zA-Z ]', ''))) as LASTNAME from employee   """).show(false)

推荐阅读