2016-09-27 17 views
1

다음 테이블이있는 상황이 있습니다.펜타 호 주전자에서 1 to many SQL (Table inputs)을 다루는 방법

직원 - EMP_ID, EMP_NAME, emp_address

Employee_assets - EMP_ID (FK), ASSET_ID, ASSET_NAME (직원에 대한 1-많은)

Employee_family_members - EMP_ID (FK) , fm_name, fm_relationship (직원의 경우 수 많은)

이제 1000 명의 직원의 일괄 처리에서이 테이블의 데이터를 읽는 계획된 주전자 작업을 실행하고 가족 구성원 및 자산과 DB의 관계를 기반으로 1000 개의 레코드에 대한 XML 출력을 만듭니다. 모든 직원에 대해 중첩 된 XML 레코드가됩니다.

이 주전자 작업의 성능은 내 시나리오에서 매우 중요합니다.

I가 여기 두 가지 질문 -

  1. 스키마의 1 일대 다 관계에 대한 데이터베이스에서 레코드에 끌어하는 가장 좋은 방법은 무엇입니까?
  2. XML 결합 단계가 성능 저하라는 점을 감안할 때 XML 출력 구조를 생성하는 가장 좋은 방법은 무엇입니까?

답변

0

다음은이 작업을 수행 한 방법입니다.

Transformation showing the XML creation out of one to many

따라서, 기본 테이블을 읽고 나중에 그것을 위해 XML 청크를 생성 한 표 입력 단계가있다. 그 후, 흐름에서, 나는 하나의 많은 관계 (자식 테이블)를 다른 데이터베이스 조인 스텝으로 사용하여 관계 키를 전달한다. 데이터가 제거되면 자식 행에 대한 XML이 생성됩니다. 그런 다음 수정 된 Java Script Value 단계 (행 병합)로 전달 된 다음 비슷한 행에 대해 trans_Status = SKIP_TRANSFORMATION을 사용하여 내용을 병합합니다. 유사한 행이 병합/연결되면 putRow(row)을 사용하여 출력을 다음 단계로 출력합니다. 이것은 SQL이 관계 키를 기준으로 정렬/정렬되어야 함을 유의하십시오. 이것은 정상적으로 수행 중이므로 계속 진행할 수 있습니다.

0

데이터를 가져 오려면 여러 개의 db 조회 필드 또는 데이터베이스 조인 단계를 사용할 수 있습니다. 성능 현명 나는 조인이 더 빠를 것이라고 생각하지만, 사용하는 쿼리의 복잡성 및 작성 방법 등에 따라 달라집니다.