매핑 옵션

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 7분
  • 임포트 상황과 프로덕션 테이블에 로드하기 전에 데이터를 변환해야 하는지 여부에 따라 여러 가지 방법으로 필드를 매핑할 수 있습니다.

    또한 지정된 가져오기 작업에는 여러 매핑 방법을 활용해야 할 수 있으며 이러한 방법은 서로 쉽게 함께 사용할 수 있습니다.

    자동 매핑 유틸리티

    가장 간단한 매핑 방법은 임포트 세트의 모든 필드 이름이 데이터를 변환할 프로덕션 테이블의 필드 이름과 일치하는 경우입니다. 이 경우, 테이블 변환 맵 양식의 관련 목록에서 자동 맵 일치 필드를 클릭해 필드 이름이 정확히 일치하는지 확인하기만 하면 됩니다. 필드가 자동으로 일치하는 방식과 관련해 일치하지 않는 항목이 있을 경우 매핑 지원 유틸리티를 사용하여 이를 수정합니다. 모든 필드가 정확하게 일치하면 변환 관련 링크를 클릭하여 대상 테이블로 데이터 변환을 시작하십시오.

    매핑 지원 유틸리티

    매핑 지원 유틸리티는 임포트 세트 필드와 프로덕션 테이블 필드 간의 매핑을 지정하기 위해 시각상 직관적인 환경을 제공합니다. 매핑 지원 유틸리티를 사용하면 단일 소스 필드(임포트 세트 테이블의 필드)를 여러 대상 필드(프로덕션 테이블의 필드)에 매핑할 수 있습니다.
    그림 1. 매핑 지원

    날짜 형식 변경

    소스 필드의 날짜 형식이 대상 필드의 형식과 일치하지 않는 경우 날짜 형식 매핑을 설정하여 날짜를 한 형식에서 다른 형식으로 변환할 수 있습니다. 예를 들어 이 매핑은 CSV 원본 파일의 날짜 형식이 MM-dd-yyyy 형식을 사용하도록 지정합니다.
    그림 2. 필드 맵 날짜 형식
    그림 3. 필드 맵 날짜 형식 옵션
    날짜 형식 옵션은 다음과 같습니다.
    표 1. 매핑 옵션
    날짜 형식 설명
    dd-MM-yyyy 일-월-연도
    dd-MM-yyyy hh:mm:ss 일-월-년 시-분-초
    dd-MM-yyyy hh:mm:ss z 일-월-연도 시간-분-초 시간대
    MM-dd-yyyy 월-일-연도
    MM-dd-yyyy hh:mm:ss 월-일-연도 시-분-초
    MM-dd-yyyy hh:mm:ss z 월-일-연도 시간-분-초 시간대
    yyyy-dd-MM 년-일-월
    yyyy-MM-dd 년-월-일
    yyyy-MM-dd hh:mm:ss 년-월-일 시-분-초

    24시간 형식을 나타내려면 hh:mm: ss 대신 HH:mm:ss를 사용하여 사용자 지정 날짜 형식을 지정합니다.

    주:

    24시간에서 12시간 날짜 형식으로 변환하면 12:00에서 23:59까지의 시간이 00:00에서 11:59로 형식이 지정될 수 있습니다.

    기간 필드에 매핑

    ServiceNow 기간 필드는 기간 값의 밀리초를 나열하는 특수 데이터 유형을 사용합니다. 임포트 데이터를 기간 필드에 매핑하려면 다음 방법 중 하나를 사용하여 소스 값을 기간으로 변환합니다.
    • 시작 및 종료 날짜에서 기간 계산
    • 기존 지속 시간 값을 ServiceNow 지속 시간 값으로 변환

    시작 및 종료 날짜에서 기간 값 계산

    임포트 소스에 시작 날짜와 종료 날짜가 있는 경우 JavaScript를 사용하여 기간을 계산할 수 있습니다.
    1. 다음으로 이동 시스템 임포트 세트 > 변환 맵.
    2. 지속 시간 값을 계산할 변환 맵을 선택합니다. 인시던트 테이블로 임포트하는 알림 변환 맵을 예로 들 수 있습니다.
    3. 스크립트 실행 확인란을 선택합니다.
    4. JavaScript를 입력하여 시작 및 종료 날짜를 기간으로 변환합니다. 샘플 스크립트를 참조하십시오.
    5. 업데이트를 클릭합니다.
    이 샘플 스크립트는 source.u_start 및 source.u_end 필드를 target.duration 필드의 기간 값으로 변환합니다. 필요에 따라 소스 및 대상 필드와 일치하도록 필드 이름을 변경합니다.
    target.duration = gs.dateDiff(source.u_start.getDisplayValue(), source.u_end.getDisplayValue(), false);

    기간 값을 ServiceNow 기간 값으로 변환

    임포트 소스에 시작 날짜와 기간 값이 이미 포함되어 있는 경우 기존 기간을 기간으로 ServiceNow 변환할 수 있습니다. 예를 들어 기간을 초 단위로 나열하는 Excel 데이터 원본이 있을 수 있습니다. ServiceNow 기간은 밀리초 값을 가질 것으로 예상합니다.
    1. 다음으로 이동 시스템 임포트 세트 > 변환 맵.
    2. 변환 맵을 선택합니다.

      인시던트 테이블로 임포트하는 알림 변환 맵을 예로 들 수 있습니다.

    3. 스크립트 실행 확인란을 선택합니다.
    4. JavaScript를 입력하여 기존 기간 값을 ServiceNow 기간 값으로 변환합니다. 샘플 스크립트를 참조하십시오.
    5. 업데이트를 클릭합니다.
    이 샘플 스크립트는 지속 시간(초)을 필드에서 source.u_duration 부터 밀리초 단위의 지속 시간(필드에서 target.duration )으로 변환합니다. 필요에 따라 소스 및 대상 필드와 일치하도록 필드 이름을 변경합니다.
    //Transform the value in source.u_duration from seconds to milliseconds
    target.duration.setDateNumericValue(source.u_duration * 1000);
    이 샘플 스크립트는 이미 밀리초 단위의 지속 시간(필드에서source.u_duration)을 지속 시간(필드에서target.duration)으로 ServiceNow 변환합니다. 필요에 따라 소스 및 대상 필드와 일치하도록 필드 이름을 변경합니다.
    //Transform the value in source.u_duration to ServiceNow format
    target.duration.setDateNumericValue(source.u_duration);

    스크립트를 사용하여 소스 값 계산

    다음과 같은 경우 소스 필드 대신 소스 스크립트를 사용할 수 있습니다.
    • 소스 값이 매핑된 대상 값의 형식이 아닙니다.
    • 대상 필드에 매핑하기 전에 값을 조회하려고 합니다.
    • 소스 값은 여러 필드에서 계산해야 합니다.
    • 대상 필드에 복합 병합 또는 계산된 병합 값을 생성해야 합니다.
    예를 들어, 다음 예시 소스 스크립트는 소스에서 user_name 필드가 비어 있을 때 이 필드의 값을 계산합니다.
    그림 4. 필드 맵 소스 스크립트

    소스 스크립트는 계산된 값이 전역 변수 대답에 설정될 것으로 예상합니다.

    이진 또는 BLOB 필드 매핑

    ServiceNow 는 특수 프로세스를 사용하여 JDBC 데이터 소스에서 바이너리 및 BLOB(Binary Large Object) 데이터를 임포트합니다. 모든 이진 데이터는 변환이 발생하기 전에 첨부 파일 [sys_attachment] 테이블의 레코드로 자동 변환됩니다. 임포트 세트 테이블은 임포트 테이블 필드에 실제 이진 값 대신 첨부 파일 기록의 sys_id 값만 저장합니다. 예를 들어, JDBC 데이터 소스를 사용하여 각 기록의 키 값을 이진 데이터로 저장하는 CA Service Desk 시스템에서 데이터를 임포트한다고 가정합니다. Service Desk 키 값을 테이블로 ServiceNow 임포트하면 필드에는 ServiceNow 실제 이진 데이터가 아니라 첨부 파일 기록 [sys_attachment] 테이블의 해당 이진 데이터에 대한 sys_id 참조만 포함됩니다 .

    변환 맵이 첨부 파일에 액세스하도록 하려면 onAfter 스크립트에서 GlideRecord API를 사용합니다. target.sys_id 객체는 데이터가 임포트 세트 테이블에 배치된 후에만 사용할 수 있기 때문에 스크립트를 onAfter 이벤트에서 실행해야 합니다. 예를 들어, 결과 첨부 파일을 대상 변환 기록에 매핑하려면 다음 스크립트를 사용할 수 있습니다.
    var agr = new GlideRecord("sys_attachment");
      agr.addQuery("sys_id", source.u_blob_field);
      // the source field needs to be mapped to the source that is the BLOB
      agr.query();
       if(agr.next()) {
        agr.table_name = "cmdb_ci"; // the target table of the transform map
        agr.table_sys_id = target.sys_id; // the target record
        agr.content_type = source.u_contentype; 
        // the content type string if available,  
        // this becomes the mime encoding when clicking an attachment link
        agr.update(); // finally, move/re-attach the attachment to the target row }
    db_image 테이블에 직접 매핑하는 경우 다음 onAfter 스크립트를 실행하여 이미지를 표시합니다.
    var strTemp = source.u_file_name; 
    var fType = strTemp.substr(- 3); 
    var iCont = "" ;
     
     if(fType == 'jpg') {
      iCont = 'jpeg' ; } 
     else {
      iCont = fType; }
     
     var agr = new GlideRecord("sys_attachment");
     agr.addQuery("sys_id", source.u_blob_field);
     agr.query();
     
     if(agr.next()) {
      agr.table_name = "ZZ_YYdb_image";
      agr.table_sys_id = target.sys_id;
      agr.content_type = 'image/' + iCont;
      agr.file_name = 'image';
      agr.update(); }