ETL 이란?
개요
추출, 전환, 적재(ETL)는 다양한 소스의 데이터를 데이터 웨어하우스라고 부르는 대형 중앙 집중식 리포지토리에 결합하는 과정이다.
ETL은 원시 데이터를 정리 및 구성해서 스토리지, 데이터 분석, 기계 학습(ML)용으로 준비하기 위한 비즈니스 규칙 세트이다.
사용자는 데이터 분석(비즈니스 의사 결정의 결과 예측, 보고서 및 대시보드 생성, 운영 비효율성 저감 등)을 통해 특정 비즈니스 인텔리전스 요구 사항을 해결할 수 있다.
ETL의 작동
추출, 전환, 적재(ETL)는 데이터를 소스 시스템에서 대상 시스템으로 정기적으로 이동하는 방식으로 작동한다.
ETL 프로세스는 다음 세 단계로 작동한다.
- 소스 데이터베이스에서 관련 데이터 추출
- 분석에 더 적합한 형식으로 데이터 변환
- 데이터를 대상 데이터베이스에 로드

1. 테이블 추출
데이터 추출 프로세스에서 추출, 전환, 적재(ETL) 도구는 여러 소스에서 원시 데이터를 추출하거나 복사하여 스테이징 영역에 저장한다.
스테이징 영역(또는 랜딩 존)
- 추출된 데이터를 일시적으로 저장하기 위한 중간 저장 영역이다.
- 데이터 스테이징 영역은 일시적인 경우가 많다 — 데이터 추출이 완료되면 콘텐츠가 지워진다.
- 스테이징 영역에는 문제 해결을 위한 데이터 아카이브가 유지될 수도 있다.
시스템이 데이터 소스에서 대상 데이터 스토어로 데이터를 전송하는 빈도는 기반 변경 데이터 캡처 메커니즘에 따라 다르다. 데이터 추출은 일반적으로 다음 세 가지 방법 중 하나로 수행됩니다.
업데이트 알림
대부분의 데이터베이스 및 웹 애플리케이션은 아래 데이터 통합 방법을 지원하는 업데이트 메커니즘을 제공한다.
- 업데이트 알림에서 소스 시스템은 데이터 레코드가 변경되면 사용자에게 알림
- 해당 변경 사항에 대해 추출 프로세스를 실행
증분 추출
일부 데이터 소스는 업데이트 알림을 제공할 수 없지만, 일정 기간 동안 수정된 데이터를 식별하고 추출할 수 있다.
이 경우 시스템은 일주일에 한 번, 한 달에 한 번 또는 캠페인 종료 시와 같은 주기적인 간격으로 변경 사항을 확인한다. 따라서 변경된 데이터만 추출하면 됩니다.
전체 추출
일부 시스템에서는 데이터 변경 사항을 식별하거나 알림을 제공할 수 없으므로, 모든 데이터를 다시 로드하는 것이 유일한 옵션이 된다.
이 추출 방식을 사용하려면 마지막 추출의 복사본을 보관하여 새 레코드를 확인해야 한다. 이 방식은 데이터 전송량이 많으므로 크기가 작은 테이블에만 사용하는 것이 좋다.
2. 데이터 변환
데이터 변환에서 추출, 전환, 적재(ETL) 도구는 준비 영역의 원시 데이터를 변환하고 통합하여 대상 데이터 웨어하우스에 대비한다. 데이터 변환 단계에는 다음과 같은 유형의 데이터 변경이 포함될 수 있다.
기본 데이터 변환
기본 변환은 오류를 제거하거나 데이터 필드를 비우거나 데이터를 단순화하여 데이터의 품질을 높인다. 이러한 변환의 예는 아래와 같다.
데이터 정리
- 데이터 정리는 오류를 제거하고 소스 데이터를 대상 데이터 형식에 매핑한다.
- ex. 빈 데이터 필드를 숫자 0에 매핑하거나, 데이터 값 ‘Parent’를 ‘P’에 매핑하거나, ‘Child’를 ‘C’에 매핑할 수 있다.
데이터 중복 제거
- 데이터 정리의 중복 제거 기능은 중복 레코드를 식별하고 제거한다.
데이터 형식 수정
- 형식 수정은 문자 집합, 측정 단위 및 날짜/시간 값과 같은 데이터를 일관된 형식으로 변환한다.
- ex. 한 식품 회사는 재료를 각각 킬로그램과 파운드로 계량하는 서로 다른 레시피 데이터베이스를 가지고 있다. 이 경우 ETL은 모든 단위를 파운드로 변환한다.
고급 데이터 변환
고급 변환은 데이터를 보다 쉽게 분석할 수 있도록 비즈니스 규칙을 사용하여 데이터를 최적화한다. 이러한 변환의 예는 아래와 같다.
파생
- 파생은 데이터에 비즈니스 규칙을 적용하여 기존 값에서 새로운 값을 계산한다.
- ex. 비용을 빼거나 각 품목의 가격에 주문 품목 수를 곱하여 총 구매 비용을 계산 함으로써 매출에서 수익을 구할 수 있다.
결합
- 데이터 준비 과정에서 결합은 서로 다른 데이터 소스의 동일한 데이터를 연결하는 것이다.
- ex. 여러 공급업체의 구매 가격을 더하고 최종 합계만 대상 시스템에 저장하면 특정 품목의 총 구매 비용을 구할 수 있다.
분할
- 열 또는 데이터 속성을 대상 시스템에서 여러 열로 나눌 수 있다.
- ex. 데이터 소스에 고객 이름이 ‘Jane John Doe’로 저장되어 있으면, 이를 이름, 중간 이름, 성으로 나눌 수 있다.
요약
- 요약은 많은 데이터 값을 더 작은 데이터 세트로 줄임으로써 데이터 품질을 높인다.
- ex. 고객 주문 송장 값에는 여러 개의 작은 금액이 포함될 수 있다. 일정 기간에 걸쳐 데이터를 합산하는 방법으로, 고객 평생 가치(CLV) 지표를 만들어 데이터를 요약할 수 있다.
암호화
- 대상 데이터베이스로 데이터를 스트리밍하기 전에 암호화를 추가하여 중요한 데이터를 보호함으로써 데이터 관련 법률 또는 데이터 프라이버시를 준수할 수 있다.
3. 데이터 로딩
추출, 전환, 적재(ETL) 도구는 데이터 로드 시에 변환된 데이터를 스테이징 영역에서 대상 데이터 웨어하우스로 이동한다. ETL을 사용하는 대부분의 조직에서는 프로세스가 자동화되고 잘 정의되어 있으며 배치 방식으로 연속적으로 수행된다. 데이터를 로드하는 아래와 같다.
전체 로드
전체 로드에서는 소스의 전체 데이터가 변환되어 데이터 웨어하우스로 이동한다. 일반적으로 전체 로드는 소스 시스템에서 데이터 웨어하우스로 데이터를 처음 로드할 때 발생한다.
증분 로드
증분 로드에서는 ETL 도구가 대상 시스템과 소스 시스템 간의 델타(또는 차이)를 일정한 간격으로 로드한다. 마지막 추출 날짜가 저장되어, 이 날짜 이후에 추가된 레코드만 로드된다. 증분 로드를 구현하는 방법은 두 가지가 있다.
스트리밍 증분 로드
- 데이터 볼륨이 작은 경우 데이터 파이프라인을 통해 지속적인 변경 사항을 대상 데이터 웨어하우스로 스트리밍 할 수 있다.
- 데이터 속도가 초당 수백만 개의 이벤트로 증가하면 이벤트 스트림 처리를 사용하여 데이터 스트림을 모니터링하고 처리하여 보다 신속하게 의사 결정을 내릴 수 있다.
배치 증분 로드
- 데이터 볼륨이 큰 경우 로드 데이터 변경 사항을 주기적으로 배치 단위로 수집할 수 있다.
- 설정된 시간 동안 데이터가 동기화되면 소스 또는 대상 시스템에서 어떤 작업도 수행할 수 없다.