병합을 사용하여 기록 업데이트
병합 옵션을 사용하면 임포트 데이터를 변환할 때 기존 대상 테이블 기록을 업데이트할 수 있습니다.
필드 맵의 병합 옵션을 사용하면 임포트 세트 기록이 변환될 때 선택한 대상 필드를 병합에 사용해야 하는지 여부를 지정할 수 있습니다. 필드 맵 병합 확인란을 선택하면 임포트 세트 행이 변환될 때 인스턴스가 대상 테이블에서 임포트 세트 행 소스 필드와 대상 필드 값이 같은 기존 기록을 확인합니다.
병합 옵션
임포트 세트에서 데이터를 병합하는 데 사용할 수 있는 몇 가지 구성이 있습니다.
병합 없음
병합을 정의하지 않을 경우, 임포트한 모든 행은 새 기록으로 간주됩니다. 기존의 기록은 업데이트되지 않습니다.
단일 필드 병합
단일 필드를 병합하면 기존 기록을 업데이트할 수 있습니다.
병합 필드에서 준비 중인 테이블 기록과 동일한 값을 가진 대상 테이블 기록이 존재할 경우, 대상 테이블 기록은 임포트 세트 기록 값을 사용하여 업데이트됩니다.
다중 필드 병합
다중 필드를 병합하면 기존 기록을 업데이트할 수 있습니다.
모든 병합 필드에서 준비 중인 테이블 기록과 동일한 값을 가진 대상 테이블 기록이 존재할 경우, 대상 테이블 기록은 준비 중인 테이블 기록 값을 사용하여 업데이트됩니다. 대상 테이블과 준비 중인 테이블 간의 모든 병합 필드 값은 다중 필드와 병합되도록 서로 일치해야 합니다.
조건부 병합
스크립트를 사용하면 준비 중인 테이블 행이 대상 기록과 병합되어야 하는지 여부를 결정할 수 있습니다.
대부분의 조건부 병합 스크립트는 sys_id 필드에 대한 필드 맵의 소스 스크립트 필드에 정의되어 있습니다. 준비 중인 테이블 기록 값을 사용하여 대상 기록을 업데이트하려면 스크립트는 대상 테이블 기록의 sys_id를 반환해야 합니다.
조건부 병합 스크립트 예제
조건부 병합 스크립트의 예를 검토합니다.
업데이트만
일치가 발견된 기록만 업데이트하고 일치가 없는 기록은 건너뛰려면 병합 필드를 지정하고 변환 맵에 onBefore 스크립트로 다음 스크립트를 추가합니다.
if (action == 'insert')
ignore = true;
닷워킹을 사용한 조건부 병합
조건부 병합 스크립트에서 닷워킹 필드를 사용할 수 있습니다(예: 인시던트 데이터를 임포트할 때 사용자의 이메일 주소를 일치시키는 경우).
이 예시에서 이 스크립트는 인시던트 대상 테이블 sys_id 필드에 대한 필드 맵의 소스 스크립트 에 정의되어 있습니다.
var gr = new GlideRecord('incident');
gr.addQuery('caller_id.email', source.u_email); //check if the incident caller's email matches the import row email value
gr.query();
if(gr.next())
{
answer = gr.sys_id; //if a match exists, return the sys_id of the matching Incident record
}
else
{
answer= -1;
}
OR 조건과 조건부 병합
조건부 병합 스크립트를 사용하면 여러 필드 값을 기준으로 소스 및 대상 기록을 일치시킬 수 있습니다. 모든 병합 필드가 일치해야 하는 다중 필드 병합과 달리, 필드 중 하나만 일치시키도록 스크립트를 지정할 수 있습니다.
이 예시에서 이 스크립트는 사용자 대상 테이블 sys_id 필드에 대한 필드 맵의 소스 스크립트 에 정의되어 있습니다.
var gr = new GlideRecord('sys_user');
var qc = gr.addQuery('email', source.u_email); //first check if the user's email matches
qc.addOrCondition('user_name', source.u_name); //alternatively, check if the username matches
gr.query();
if(gr.next())
{
answer = gr.sys_id; //if a match exists, return the sys_id of the matching User record
}
else
{
answer = -1;
}
대/소문자를 구분하는 병합 필드 값
임포트 세트가 서로 다른 케이스와 일치하는 값을 병합할 때 병합되는지 여부를 제어할 수 있습니다.
필드 맵 대/소문자 구분 병합 필드를 사용하면 대/소문자 구분으로 필드 값을 병합할 수 있습니다.
기본적으로 필드 맵에서 병합 으로 표시된 필드는 기존 기록에 대한 대/소문자를 구분하지 않는 조회에 사용됩니다. 대/소문자 구분 병합 확인란을 선택하면 인스턴스가 병합 필드 값을 대/소문자로 일치시키려고 시도합니다. 대상 기록과 임포트 세트 준비 기록의 값이 동일한 값과 대/소문자인 경우에만 대상 테이블 기록이 업데이트됩니다. 그렇지 않으면 새 기록이 생성됩니다.
빈 필드에 병합
임포트 세트가 값이 없는 필드에서 병합되는지 여부를 제어할 수 있습니다.
필드 맵 빈 필드 병합 필드를 사용하면 값이 없는 필드를 병합할 수 있습니다.
기본적으로 필드 맵에서 병합 으로 표시된 필드를 사용하면 임포트 세트에서 임포트 세트 스테이징 기록의 값과 일치하는 필드 값이 있는 대상 기록을 확인합니다. 해당 필드 맵에 대해 빈 필드 병합 을 선택하면 대상 기록과 임포트 세트 스테이징 기록의 빈 값이 병합 목적에 대한 일치 항목으로 계산됩니다.
예를 들어, 사용자 변환 맵은 이메일 필드에서 병합됩니다. 빈 필드 병합 옵션을 선택하면 빈 이메일 주소가 포함된 소스 기록이 빈 이메일 주소가 포함된 대상 기록에 병합됩니다.