ETL(추출 변환 로드) 정의 개요

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기6분
  • ETL 정의는 소스 테이블에서 데이터를 추출하고, 원하는 대로 데이터를 변환하고, 하나 이상의 대상 테이블로 데이터를 로드합니다. ETL 정의는 중첩된 데이터 구조도 지원합니다.

    ETL 정의는 데이터를 매핑하는 방법을 지정합니다.

    데이터 임포트는 데이터 소스에서 시작됩니다. 데이터 원본은 추출할 데이터의 형식과 위치를 지정합니다. 데이터가 추출되면 스테이징 또는 임포트 세트 테이블에 로드됩니다. 그런 다음 ETL 정의는 에서 하나 이상의 대상 테이블에 ServiceNow데이터를 매핑하는 방법을 지정합니다. 외래 키 및 고유 키 제약 조건을 유지하면서 데이터를 ServiceNow 테이블에 매핑하는 ETL 정의를 만들 수 있습니다. ETL 정의를 사용한 임포트 프로세스의 개요입니다.

    ETL 엔터티는 입력 데이터 및 대상 테이블을 나타냅니다.

    ETL 정의는 엔터티를 기반으로 합니다. 생성하는 모든 ETL 정의에는 연결된 엔터티가 있어야 합니다. 엔터티는 입력 데이터와 대상 테이블을 나타냅니다.
    • 입력 데이터는 스테이징 테이블에 로드된 데이터입니다.
    • 대상 테이블은 데이터를 종료하려는 테이블입니다 ServiceNow .
    매핑과 작업도 엔터티를 기반으로 하므로 정의를 만들 때 초기에 엔터티를 만드는 것이 좋습니다.

    다음 이미지는 컴퓨터에 대한 ETL 정의의 예를 보여줍니다. 이 정의에는 세 개의 엔터티가 연결되어 있습니다. 임포트 세트 엔터티는 입력 데이터, 즉 Excel 파일에서 스테이징 테이블로 로드된 데이터를 나타냅니다. 임포트 세트 엔터티에 대한 테이블이 없음으로 설정되어 있습니다. 컴퓨터와 디스크가 대상 엔터티입니다. 컴퓨터 [sn_etl_demo_computer] 및 디스크 [sn_etl_demo_disk]라는 두 ServiceNow 개의 테이블을 나타냅니다. 준비 테이블의 데이터가 두 개의 대상 테이블로 로드됩니다. 컴퓨터, 디스크 및 임포트 세트에 대한 세 개의 ETL 엔터티를 보여주는 컴퓨터에 대한 ETL 정의입니다.

    입력 엔터티

    입력 엔터티는 스테이징 테이블에 로드되어 추출된 데이터를 나타냅니다. 입력 엔터티에는 임포트 세트 테이블 열을 나타내는 ETL 엔터티 필드가 있거나 JSON 키(단일 열 모드의 경우)가 있습니다. ETL 엔터티 필드 탭에서 새로 만들기 를 선택하여 엔터티 필드를 생성할 수 있습니다.

    다음 이미지는 컴퓨터 ETL 정의의 임포트 세트 엔터티를 보여줍니다. 가져오기 집합 엔터티는 Excel 파일에서 컴퓨터 [sn_elt_demo_computers_stage] 스테이징 테이블로 로드된 입력 데이터를 나타냅니다. 임포트 세트 엔터티에는 준비 테이블의 각 열에 대한 엔터티 필드가 있습니다. 임포트 세트 엔터티에는 준비 테이블의 각 열에 대한 엔터티 필드가 있습니다.

    대상 엔터티

    대상 엔터티는 의 대상 테이블을 ServiceNow나타냅니다. 다음 이미지는 컴퓨터 ETL 정의의 디스크 대상 엔터티를 보여 줍니다. 디스크는 sn_etl_demo_disk 대상 테이블을 나타냅니다. 테이블 열을 나타내는 엔터티 필드와 작업을 적용할 임시 값이 있습니다.컴퓨터 및 디스크 대상 엔터티에는 작업에 대한 테이블 열과 임시 값을 나타내는 엔터티 필드가 있습니다.

    각 엔터티 필드에는 이름, 참조 또는 경로 필드, 병합 필드 및 강제 변환 동작이 있습니다.

    참조 필드

    한 테이블의 행이 두 번째 테이블 행의 sys_id 첫 번째 테이블의 행에 열 값으로 저장하여 두 번째 테이블의 행을 참조하는 특수 필드입니다. 참조는 sys_id로 저장되지만 데이터를 임포트할 때는 값으로 임포트됩니다. 따라서 참조 필드의 경우 참조된 테이블의 고유 필드 값을 임포트한 데이터에 매핑합니다. 최종적으로 시스템은 이 값을 사용하여 관련 기록을 찾고, sys_id 검색하고, 적절한 열에 저장합니다.

    예를 들어 앞에서 언급한 디스크 엔터티에서 sn_etl_demo_disk 테이블에는 참조 필드 컴퓨터를 사용하는 컴퓨터에 대한 참조가 있습니다. 그러나 가져온 데이터에는 컴퓨터를 고유하게 식별하는 데 사용할 수 있는 컴퓨터 ID만 포함됩니다. 따라서 디스크 엔터티에서 참조된 필드 경로(computer.id)는 컴퓨터 테이블의 열도 지정합니다.

    고유 키에 대한 필드가 두 개 이상인 경우 여러 필드를 추가하여 모든 필드 값을 제공해야 합니다. 예를 들어 다음 이미지에서 sn_etl_demo_worker 테이블에는 sn_etl_demo_address 테이블에 대한 참조가 있습니다. sn_etl_demo_address 테이블에는 고유 키로 세 개의 열(번호, 거리 및 우편 번호)이 있습니다. 따라서 Worker 엔터티에는 고유 키 열에 대한 세 개의 필드가 있습니다. 참조 필드도 병합 필드로 사용할 수 있습니다. Worker 엔터티에는 고유 키 열에 대한 세 개의 필드가 있습니다.

    병합 필드

    대상 엔터티의 고유 키를 지정합니다. 시스템은 병합 필드를 사용하여 기존 기록을 업데이트할지 아니면 새 기록을 삽입할지 결정합니다. 병합 필드가 true이고 시스템이 동일한 병합 필드 값을 가진 기존 기록을 찾으면 기존 기록을 업데이트합니다. 이전에 표시된 sn_etl_demo_disk 테이블의 경우 디스크 엔터티에서 일련 번호 열은 모든 디스크 항목에 대해 고유하므로 병합 필드로 지정됩니다.

    강제 변환 작업
    참조 필드의 경우 고유 키 값이 있는 행이 참조된 테이블에 없을 때 수행할 작업을 지정합니다. 강제 변환 작업에는 다음 옵션이 있습니다.
    • 참조된 테이블에 새 행을 만들고 대상 행에 할당합니다.
    • 참조 필드 값을 무시합니다. 참조 열은 비어 있는 상태로 저장됩니다.
    • 참조 필드 값을 거부합니다. 대상 테이블에 삽입되거나 업데이트되지 않습니다.

    강력한 변환 엔진(RTE) 엔터티 운영으로 데이터 수정

    엔터티 운영은 입력 데이터를 대상 테이블에 저장하기 전에 수정합니다. 다음 이미지는 연결 작업의 예를 보여 줍니다. 컴퓨터에 대한 ETL 정의에서 가져온 데이터에는 유형과 버전이 모두 포함됩니다. 그러나 대상 테이블에는 유형과 버전을 조합한 값이 필요합니다. 따라서 Computer 엔터티는 연결 작업을 사용하여 형식과 버전을 연결합니다. 엔터티 작업은 엔터티 필드에서만 수행할 수 있으므로 이 예에서는 임포트 세트 값을 복사하기 위해 두 개의 임시 필드가 생성됩니다. 컴퓨터 엔터티에 대한 RTE 엔터티 연결 작업입니다.

    RTE 엔터티 매핑 필드 매핑 지정

    엔터티 필드와 운영으로 입력 및 대상 엔터티를 만든 후 각 대상 엔터티에 대한 RTE 엔터티 매핑을 생성합니다. RTE 엔터티 매핑은 입력 엔터티의 필드가 대상 엔터티의 필드에 매핑되는 방법을 지정합니다. 컴퓨터에 대한 ETL 정의에는 두 개의 RTE 엔터티 매핑이 있습니다. 다음 이미지에 표시된 하나는 입력 데이터를 컴퓨터 엔터티 필드에 매핑합니다. 다른 하나는 입력 데이터를 디스크 엔터티 필드에 매핑합니다. 임포트 세트에서 컴퓨터 엔터티로 데이터를 매핑하는 방법을 지정하는 RTE 엔터티 매핑입니다.

    ETL 정의의 중첩된 데이터

    JSON 데이터 임포트를 사용하면 JSON 배열이 있는 기록 또는 동일한 테이블에 대해 둘 이상의 행을 임포트하는 기록을 임포트해야 할 수 있습니다. ETL 정의는 경로를 약간 변경하여 이러한 페이로드를 지원합니다. 다음 JSON 데이터에는 이메일 정보에 대한 배열이 있습니다. 다음 두 이미지와 같이 입력 또는 대상 엔터티의 경로를 수정하여 이 데이터를 가져올 수 있습니다.
    {
          "id": "123",
          "name": "Jhon",
          "emails": [
            {
              "address": "jhon@servicenow.com",
              "type": "work"
            },
            {
              "address": "jhon@gmail.com",
              "type": "personal"
            }
          ]
        }
    
    중첩된 데이터가 있는 입력 엔터티

    중첩된 데이터에 대한 입력 엔터티는 입력 JSON 데이터도 나타냅니다. 중첩된 데이터가 없는 임포트와 마찬가지로 값을 나타내는 엔터티 필드가 있습니다. 유일한 차이점은 배열이 있는 경로가 별표(*)로 지정된다는 것입니다. 다음 이미지는 address 및 type에 대한 경로가 emails[*].address 및 emails[*].type으로 지정되는 방법을 보여줍니다.배열 내에서 값을 지정하기 위해 별표를 사용하는 방법을 보여주는 중첩 입력 데이터에 대한 ETL 엔터티입니다.

    중첩된 데이터가 있는 대상 엔터티

    중첩된 데이터가 있는 대상 엔터티는 경로가 별표(*)로 끝난다는 점을 제외하고는 일반 임포트의 대상 엔터티와 같습니다. 별표는 시스템이 엔터티를 배열로 처리하도록 지시합니다. 이메일 엔터티에서 대상 경로는 email[*]로 지정됩니다. 병합 필드, 참조 필드 및 강제 변환 작업은 일반 임포트와 동일하게 작동합니다.배열을 지정하기 위해 별표를 사용하는 방법을 보여주는 중첩 입력 데이터에 대한 ETL 엔터티입니다.

    중첩된 데이터와의 RTE 엔터티 매핑

    중첩된 데이터에 대한 RTE 엔터티 매핑은 일반 매핑과 같습니다. 계층 구조의 모든 필드를 엔터티에 할당할 수 있습니다.