2016-07-23 3 views
0

업데이트 테이블 구성 요소 그대로 업데이트 쿼리에 대해 이미 기존 레코드가 전송되면 어떻게됩니까? 사용하지 않는가?Abinitio의 업데이트 테이블 구성 요소에서 다시 업데이트 할 기존 레코드 전달

업데이트 할 (삽입하지 않은) 레코드가있는 abinitio 출력 파일이 있습니다. 실제로 업데이트되는 레코드 만 수집해야합니다. 그렇다면 DB (업데이트되지 않음)에서 이전과 완전히 동일하고 적어도 하나 이상의 필드가 업데이트 된 레코드를 어떻게 분리 할 수 ​​있습니까?

+0

왜이 태그는 데이터베이스와 Ab Initio 모두에 태그가 붙습니까? 작업은 어디에서 수행되고 있습니까? –

+0

업데이트 테이블 구성 요소 (abinitio)에서 Update/insert 쿼리를 사용하여 데이터베이스 dB2를로드합니다. 제 질문에 대답 해 주시겠습니까? –

답변

0

내 첫 번째 접근 방식은 Alex가 제안한 것과 동일하지만 모든 필드를 키로 결합하는 것이 더 많은 시간과 리소스를 필요로하는 것처럼 보입니다. 더 나은 방법은 기존 값과 새 값을 비교하여 형식을 다시 정의하는 매개 변수 또는 각 필드의 식 별 필터로 업데이트하는 것입니다. 이렇게하면 실제로 업데이트 될 레코드 만 제공됩니다. 마이클이 맞습니다. DB2는 실제 업데이트인지 여부와 관계없이 업데이트됩니다. 따라서 사용되지 않는 포트는 업데이트되지 않은 레코드를 제공하지 않습니다.

1

행이 변경되었는지 여부에 관계없이 DB2가 갱신을 수행하므로 이것은 ETL 질문입니다. 나는 Ab Initio에 대해 자세히 알지 못하지만 DB2 업데이트에 대한 변경 감지를 먼저 수행해야합니다. Ususally ETL 도구에는 변경 감지를위한 일종의 "변경 캡처"/ "비교"/ "차이"기능이 있습니다.

+0

답으로 표시해주세요. 감사합니다. – MichaelTiefenbacher

0

업데이트 표 구성 요소에서 사용되지 않은 포트로 재생하려고 할 수 있으며 ActionRequired 플래그도 확인하십시오.

업데이트가 발생하는지 또는 더 쉽게 업데이트 만 제공하는지 결정하는 쉬운 방법은 데이터베이스의 데이터 (업데이트 파일로 업데이트 할 모든 레코드를 선택하는 명령문)를 조인하는 것입니다. 레코드의 모든 필드에있는 데이터베이스와 키를 조인하십시오. 업데이트 파일과 관련하여 사용되지 않는 포트에서 나오는 레코드는 업데이트 작업을 수행하는 레코드입니다.