2014-07-28 7 views
1

ETL 도구 (Talend)를 사용하여 데이터 통합 ​​프로세스를 만들려고합니다.데이터 통합 ​​: 표준 형식으로 데이터 가져 오기

다양한 소스 (다양한 형식의 데이터)를 단일 형식으로 가져 오려고 할 때 직면하는 문제가 있습니다.

소스의 열 이름과 구조가 다를 수 있습니다 (순서, 데이터 유형 등). 이렇게 다른 메타 데이터. 내가보기에, 그것은 매우 일반적인 경우입니다. 그러나이 도구는 동적 매핑 기능을 제공하지 않으므로이를 처리 할 수 ​​없습니다.

이러한 시나리오를 처리하는 가장 좋은 방법은 무엇입니까?

답변

0

Talend는 동적 매핑 도구를 제공합니다. XML 데이터 용 tMap 또는 tXmlMap이라고합니다.

tHMap (계층 적 매핑 도구)이 훨씬 강력하지만 Talend 버전에서 원시 적이기 때문에 아직 사용하지는 않았지만 (5.4) 더 유용 할 것입니다. 5.5에서.

가장 좋은 방법은 각 구성 요소 다음에 tMap을 사용하여 데이터 스키마를 표준화하는 것입니다.

먼저 출력 스키마가 어떤 모양인지 (현재 스키마 중 하나와 같을 수도 있고 필요한 경우 완전히 다를 수도 있음) 선택한 다음 스키마를 복사하여 각 tMap의 출력 테이블에 붙여 넣기 만하면됩니다. 그런 다음 관련 데이터를 매핑하십시오.

예 작업은 다음과 같이 보일 수 있습니다

Example job layout

어디에서 작업에 데이터를 하드 코딩하는 대신에 tFixedFlowInput 구성 요소를 사용하고 스키마 및 각 "파일"에 대한 포함 된 데이터 (

파일 1 : file1 schema and data 파일 2 : file2 schema and data 파일 3 : 0) 파일에 읽을 수 있지만 전제가 동일는 다음과 같습니다

그리고 그들은 다음 첫 번째 "파일"의 스키마와 일치하도록 매핑됩니다 :

파일 1 : file1 tMap configuration 파일 2 : file2 tMap configuration 파일 3 : file1 tMap configuration

공지 사항을 어떻게 첫 번째 tMap 구성은 스키마를 정확히 동일하게 유지하므로 변경되지 않습니다.

입력이 모두 동일한 스키마를 공유 했으므로 tUnite 구성 요소를 사용하여 데이터 (SQL의 UNION 연산자와 유사)를 사용할 수 있습니다.

이후 우리는 하나 마지막 단계를 가지고 우리가 쉽게 M 또는 F에 "섹스"필드를 표준화 할 수 있도록 tReplace 구성 요소를 사용 :

tReplace configuration to map "male" to "M" and "female" to "F"

그리고 마지막으로 I 출력에 그 콘솔이지만 이것은 사용 가능한 출력 구성 요소로 출력 될 수 있습니다.

매핑을 미리 정의 할 필요없이 진정한 동적 옵션을 사용하려면 모든 데이터를 동적 스키마로 읽어야합니다. 그런 다음 구조를 정의 된 출력으로 구문 분석 할 수 있습니다.

이 경우 파일의 데이터를 동적 스키마 (단일 열)로 읽은 다음 임시 데이터베이스 테이블에 바로 놓을 수 있습니다. Talend는 원본 파일의 머리글에 따라 열을 자동으로 만듭니다.

여기에서 변형 매핑 파일과 데이터베이스의 데이터 사전을 사용하여 원본 열의 데이터를 추출하고이를 출력 열로 직접 매핑 할 수 있습니다.

+0

tMap 구성 요소에서 소스 메타 데이터를 변경할 수 없습니다. 고정되어야합니다. 열 이름과 순서가 다른 파일을 어떻게 처리합니까? 내가 여러 소스 파일을 말해봐 : 파일 1 열이 있습니다 이름, 성별, Mob_No 파일 3 : ... 파일 4 : ... ... 이름, MOBILE_NUMBER, 섹스 파일 2 열이 있습니다. .. 목표 대상 스키마 : 이름, 번호, 성별. 어떻게 매핑합니까? 하나의 파일 만 대상 파일에 매핑 할 수 있습니다. 권리? – Kaushal

+0

여기서 무엇을하려고합니까? 그들과 합류하거나 단결시켜야합니까? – ydaetskcoR

+0

서로 다른 스키마를 사용하고 하나의 표준 스키마에 매핑 한 다음 데이터를 통합하여 하나의 장소가되도록 작업 예제를 추가했습니다. 그것은 당신의 질문을 커버합니까? – ydaetskcoR