Pentaho Kettle(PDI)拆分名称

时间:2014-05-21 11:27:04

标签: pentaho etl kettle

如何将名称拆分为FirstName和LastName?

有一个分割字段转换函数,但只按给定的分隔符拆分字段。除了在某些情况下数据将具有3个名称,甚至是4个名称之外,这将是有效的。因此,如果您不知道要提供多少名称,则没有动态获取姓氏的方法。

假设输入字段FullName包含以下4行: John Doe John Doe Smith John Doe Smith Jackson John 拆分应该是空格字符,输出应该是: 对于所有4行,FirstName应该是John(显然)

但是LastName输出应该是: Doe Smith Jackson <null>

如果需要MiddleName(不紧急但有利于信息目的),输出将是: <null> Doe Not Sure - may have to clarify with client if that comes up <null>

1 个答案:

答案 0 :(得分:1)

使用带有正则表达式的正则表达式评估组件可以解决此任务

^([^ ]+).*?([^ ]+)?$

第一组([^ ]+)总是选择字符串中的第一个名称,因为开头是^。可选的第二组([^ ]+)?选择字符串中的姓氏,因为最后是$。表达式.*?选择介于两者之间的任何东西(包括空字符串)。请注意,它必须是懒惰的(使用'?'),以便它不会从可选的第二组中窃取字符,因为?也是懒惰的。

测试转换看起来像这样

Test Transformation

正则表达式组件的详细信息如下所示

Details of the Regular Expression Component

请注意,包含全名的字符串不得在其中包含前导或尾随空格。 字符串操作组件修剪字符串负责处理。