2014-05-21 3 views
1

성을 이름과 성으로 어떻게 분할 할 수 있습니까?Pentaho 주전자 (PDI) 분할 이름

분할 필드 변환 기능이 있지만 주어진 구분 기호로 필드 만 분할합니다. 어떤 경우에는 데이터에 3 개의 이름 또는 4 개의 이름이 포함된다는 사실을 제외하고는 효과가있었습니다. 얼마나 많은 이름을 제공해야할지 모르는 경우 성을 얻기위한 동적 인 방법이 없습니다. John Doe John Doe Smith John Doe Smith Jackson John 가 분할 공간 문자이어야하고 출력되어야 :

다음 4 개의 행으로 입력란으로 FullName 가정 모든 4 행의 경우, FIRSTNAME는

존 (명백하게)이어야

그러나 성 출력해야한다 : Doe Smith Jackson <null>

이 가운데 이름에 대한 요구 사항 제공 (긴급하지를하지만, 정보 제공의 목적에 대 한 좋은 것) 경우, 출력은 다음과 같습니다 <null> Doe Not Sure - may have to clarify with client if that comes up <null>

+0

따라서 구분 기호로 구분 된 이름 집합의 성을 * 성 *으로 연결하고 다른 모든 이름을 * 이름 *으로 연결하려면? –

+0

더 자세한 요구 사항을 포함하도록 질문을 수정할 수 있습니까? 주석은 행 지향 형식에 적합하지 않습니다. –

+0

@MarcusRickert 업데이트. 감사합니다. – masterl

답변

1

이 작업 6,는 정규 표현식

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

([^ ]+)이 때문에 항상 처음에 ^의 문자열의 이름을 선택합니다 첫 번째 그룹과 정규식 평가 구성 요소를 사용하여 해결할 수 있습니다. 선택적인 두 번째 그룹 ([^ ]+)?은 끝에 $이 있기 때문에 문자열에서 성을 선택합니다. .*? 표현식은 사이에있는 모든 항목을 선택합니다 (빈 문자열 포함). ? 때문에 게으른 선택적인 두 번째 그룹의 문자를 훔치지 않도록 '?'를 사용하여 게으르도록 만들어야합니다.

는 테스트 변환은 문자열이 가되지해야 전체 이름을 포함하는 것으로이

Details of the Regular Expression Component

주와 같은 정규 표현식 구성 요소 모양이

Test Transformation

세부 사항처럼 보인다 그것에 앞뒤 공백이있다. 문자열 작업 구성 요소 트림 문자열이 처리합니다.

관련 문제