매핑 옵션
임포트 상황과 프로덕션 테이블에 로드하기 전에 데이터를 변환해야 하는지 여부에 따라 여러 가지 방법으로 필드를 매핑할 수 있습니다.
또한 지정된 가져오기 작업에는 여러 매핑 방법을 활용해야 할 수 있으며 이러한 방법은 서로 쉽게 함께 사용할 수 있습니다.
자동 매핑 유틸리티
가장 간단한 매핑 방법은 임포트 세트의 모든 필드 이름이 데이터를 변환할 프로덕션 테이블의 필드 이름과 일치하는 경우입니다. 이 경우, 테이블 변환 맵 양식의 관련 목록에서 자동 맵 일치 필드를 클릭해 필드 이름이 정확히 일치하는지 확인하기만 하면 됩니다. 필드가 자동으로 일치하는 방식과 관련해 일치하지 않는 항목이 있을 경우 매핑 지원 유틸리티를 사용하여 이를 수정합니다. 모든 필드가 정확하게 일치하면 변환 관련 링크를 클릭하여 대상 테이블로 데이터 변환을 시작하십시오.
매핑 지원 유틸리티
날짜 형식 변경
| 날짜 형식 | 설명 |
|---|---|
| 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 지속 시간 값으로 변환
시작 및 종료 날짜에서 기간 값 계산
- 다음으로 이동 .
- 지속 시간 값을 계산할 변환 맵을 선택합니다. 인시던트 테이블로 임포트하는 알림 변환 맵을 예로 들 수 있습니다.
- 스크립트 실행 확인란을 선택합니다.
- JavaScript를 입력하여 시작 및 종료 날짜를 기간으로 변환합니다. 샘플 스크립트를 참조하십시오.
- 업데이트를 클릭합니다.
target.duration = gs.dateDiff(source.u_start.getDisplayValue(), source.u_end.getDisplayValue(), false);기간 값을 ServiceNow 기간 값으로 변환
- 다음으로 이동 .
- 변환 맵을 선택합니다.
인시던트 테이블로 임포트하는 알림 변환 맵을 예로 들 수 있습니다.
- 스크립트 실행 확인란을 선택합니다.
- JavaScript를 입력하여 기존 기간 값을 ServiceNow 기간 값으로 변환합니다. 샘플 스크립트를 참조하십시오.
- 업데이트를 클릭합니다.
//Transform the value in source.u_duration from seconds to milliseconds
target.duration.setDateNumericValue(source.u_duration * 1000);//Transform the value in source.u_duration to ServiceNow format
target.duration.setDateNumericValue(source.u_duration);스크립트를 사용하여 소스 값 계산
- 소스 값이 매핑된 대상 값의 형식이 아닙니다.
- 대상 필드에 매핑하기 전에 값을 조회하려고 합니다.
- 소스 값은 여러 필드에서 계산해야 합니다.
- 대상 필드에 복합 병합 또는 계산된 병합 값을 생성해야 합니다.
소스 스크립트는 계산된 값이 전역 변수 대답에 설정될 것으로 예상합니다.
이진 또는 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(); }