개요
SCD(Slow Change Dimension)처리 유형에 대해서 정리해본다. 차원, 마스터 데이터의 변경 사항을 어떻게 처리할 것인지는 비즈니스 요구사항과 데이터 분석 목적에 따라 다양한 유형으로 나뉠 수 있다. 이를 유형별로 정리 소개해보고자 한다.
TYPE 0 : 원래 값 유지
절대 변하지 않는 값에 취하는 방식이다.
사례: 날짜 차원, 최초 계약 정보 차원
TYPE 1 : 덮어쓰기
변하는 데이터를 덮어쓴다. 이력 관리가 되지 않기에 이전의 값이 비즈니스 적으로 의미가 없을 때 사용한다.
사례: 과거 주소가 필요없을 경우의 고객 주소 등. 히스토리 데이터를 분석할 일이 없을 때.
주의사항: 과거 마스터 데이터를 토대로 계산, 집계된 데이터는 재집계의 과정을 거쳐야 한다. 히스토리 분석이 존재할 경우 피해야할 방식.
TYPE2: 새로운 행 추가
변경 사항이 발생하면 새로운 행으로 데이터를 추가한다. 데이터 구분을 위한 고유한 대체키, 유효 시작일, 유효 종료일, 현재 행 여부 플래그 컬럼이 요구된다.
사례: 고객의 멤버십 등급, 직원의 직책, 제품의 브랜드 변경 등
장점: 과거 데이터 유지 분석 가능
TYPE3: 새로운 컬럼 추가
기존 속성 값을 보존하기 위해 새로운 속성 컬럼 추가.
현재 값, 과거값 비교 용이.
대규모 변경 사항 적용시에 신규 컬럼 생성 후 적용에 유리. 반복적이고 자주 일어나는 변화에 대해서는 효율적이지 않음.
적용사례: 대규모 부서 이동, 대규모 제품군 변경
TYPE4: 미니 차원 추가
변화가 잦은 속성만 별도로 미니 차원으로 분리. 미니 차원의 기본키를 팩트 테이블에 저장하여 참조.
장점: 대용량 데이터에서 차원 테이블의 크기를 줄일 수 있음.
사례: 고객의 자주 변경되는 속성, 신용 등급과 같이 자주 변경되는 속성
TYPE5: 미니차원 + TYPE1
미니차원과 덮어쓰기를 결합한 방식. 팩트 테이블에 미니차원 키와 현재 값을 함께 저장한다. 현재 값을 조회할 시에는 미니차원 테이블을 조회하지 않고도 분석 가능. 과거 이력 조회시에는 미니차원 테이블을 조회하여 이력 조회 가능.
장점: 현재 상태 분석에 대한 성능 향상.
사례: 고객 등급과 같이 현재의 상태가 우선적으로 조회되지만 이력관리도 중요한 데이터
TYPE6: TYPE2 + TYPE3
TYPE2처럼 신규 행이 생성되고 TYPE3 처럼 이전 이력 열도 가지고 있다.
하나의 열만 조회해도 직전 데이터와 비교 가능하다는 장점이 있고 모든 이력이 남는다는 장점도 있다.
테이블이 커지고 데이터 관리가 복잡해진다는 단점이 생긴다.
대체키 | 고객ID | 이름 | 지역 | 이전 지역 | 시작일 | 만료일 | 현재사용여부 |
1 | 101 | John | Seoul | NULL | 2023-01-01 | 2023-06-01 | N |
2 | 101 | John | Busan | Seoul | 2023-06-02 | NULL | Y |
TYPE7: TYPE6와 비슷하나 현재값과 과거값을 다른 테이블로 분리
현재 테이블, 과거 테이블 생성하고 현재 테이블에는 현재 필요한 데이터(고객 ID, 이름, 지역)만 남기고 과거 이력 테이블에는 시작일, 만료일 컬럼을 추가하여 기록.
현재일/과거 조회시 데이터를 더 빠르게 가져올 수 있다는 점이 장점이나 데이터 동기화 및 함께 조회시 로직이 복잡해짐.
결론
SCD의 개념을 정리해보면서 차원, 마스터 데이터를 어떻게 다룰 수 있는지 확인해보았다. 모든 데이터는 변한다. 얼마전에 고객사의 영업조직 개편으로 집계 테이블을 싹 재집계해야했던 기억이 떠오른다. 변경 사항에 유연하게 대처하지 못하는 게 집계 테이블의 큰 단점이라고 할 수 있다. 리포트 조회 성능 때문에 완전히 포기할 수는 없지만 말이다. 데이터 변경에 대한 유연한 대처를 위해서 고민한 끝에 나온 것 중 하나가 차원 모델링이라는 걸 생각하면 중요한 포인트처럼 느껴진다. 데이터의 변화는 속도도 다르고 대처법도 다르기에 신중하게 선택할 수 있는 사람이 되고 싶다.
'DW' 카테고리의 다른 글
SAP DataSphere 데이터 플로우에서 테이블 삭제 후 재생성 불가 이슈 해결 방법 (0) | 2025.02.19 |
---|---|
센티피드 테이블과 데이터 웨어하우스에서의 활용 (0) | 2025.02.17 |
재고 팩트 테이블 처리 방식 (0) | 2025.02.16 |
Surrogate Key 개념 정리 및 SAP에서의 활용 비교 (2) | 2024.12.18 |