개요
이번 글에서는 재고(Inventory) 팩트 테이블의 처리 방식에 대해 다뤄보려고 합니다. 재고 데이터는 물품을 판매하는 모든 기업에서 필수적으로 다루는 데이터입니다. 특히 기업의 규모가 커지고 취급하는 품목이 많아질수록 데이터의 양은 기하급수적으로 증가합니다. 이에 따라 데이터 웨어하우스에서 재고 팩트 테이블을 어떻게 설계하고 관리할 것인지가 중요한 이슈가 됩니다.
재고 팩트 테이블을 처리하는 대표적인 방법은 세 가지로 나눌 수 있습니다.
- 트랜잭션 팩트 테이블: 개별 재고 변동 사항을 기록하는 방식
- 정기 스냅샷 팩트 테이블: 특정 시점의 재고 상태를 기록하는 방식
- 누적 스냅샷 팩트 테이블: 일정 기간 동안의 재고 흐름을 업데이트하며 관리하는 방식
각 방식의 특징과 활용 방안을 살펴보겠습니다.
본론
1. 트랜잭션 팩트 테이블 (Transaction Fact Table)
트랜잭션 팩트 테이블은 재고 변동이 발생할 때마다 개별 이벤트를 기록하는 방식입니다. 모든 입고, 출고, 반품 등의 트랜잭션을 새로운 행(INSERT)으로 저장하며, 기존 데이터를 수정(UPDATE)하지 않습니다.
구조 및 주요 특징
- 발생 시점: 특정 순간에 발생하는 개별 이벤트
- Grain(단위): 하나의 트랜잭션 또는 트랜잭션 라인당 1행
- 측정값(Facts): 입고량, 출고량, 할인, 비용, 매출 등
- 주요 차원(Dimensions): 날짜, 고객, 제품, 창고, 직원, 결제 유형 등
- 업데이트 여부: 없음 (에러 수정 제외)
예제 (POS 시스템에서의 트랜잭션 데이터)
거래일자 | 거래 ID | 고객 ID | 상품 ID | 창고 ID | 수량 | 할인 금액 | 판매 금액 |
2024-02-15 | TXN001 | CUST123 | PROD1001 | STORE01 | 2 | 1,000 | 9,000 |
2024-02-15 | TXN002 | CUST456 | PROD2002 | STORE02 | 1 | 500 | 4,500 |
✔ 각 행(Row)은 개별 트랜잭션을 나타냅니다.
✔ 거래가 발생할 때마다 새로운 행이 추가됩니다.
✔ 트랜잭션 데이터를 기반으로 실시간 재고 분석이 가능합니다.
장점과 한계
✅ 장점
- 가장 상세한 수준의 데이터를 저장하여 개별 이벤트 분석이 가능
- 시간 흐름에 따른 패턴 분석에 용이
- 실시간 재고 변동 및 고객 행동 패턴 분석 가능
⚠ 한계
- 데이터 양이 기하급수적으로 증가하여 성능 저하 가능
- 특정 시점의 재고량을 조회하려면 전체 데이터를 누적 계산해야 함
➡ 활용 사례: 실시간 판매 모니터링, 고객 행동 분석, 주문 흐름 추적
2. 정기 스냅샷 팩트 테이블 (Periodic Snapshot Fact Table)
정기 스냅샷 팩트 테이블은 일정한 주기로(예: 매일, 매주, 매월) 전체 재고 상태를 기록하는 방식입니다. 트랜잭션 데이터를 집계하여 특정 시점의 스냅샷을 저장하며, 이를 통해 장기적인 추세를 분석할 수 있습니다.
구조 및 주요 특징
- 발생 시점: 일정한 간격(일간, 주간, 월간)
- Grain(단위): 특정 기간(예: 하루, 한 주, 한 달)의 요약 데이터 1행
- 측정값(Facts): 총 판매 수량, 총 매출, 평균 재고량, 할인율 등
- 주요 차원(Dimensions): 날짜, 제품, 매장, 직원, 프로모션 등
- 업데이트 여부: 없음 (에러 수정 제외)
예제 (매장별 일일 재고 스냅샷)
스냅샷 날짜 | 매장 ID | 상품 ID | 총 판매 수량 | 총 매출액 | 재고 수량 | 평균 할인율 |
2024-02-15 | STORE01 | PROD1001 | 250 | 2,500,000 | 1,500 | 10% |
2024-02-16 | STORE01 | PROD1001 | 270 | 2,700,000 | 1,300 | 12% |
✔ 매장과 상품별로 특정 날짜의 재고 상태를 기록합니다.
✔ 트랜잭션 데이터보다 적은 데이터로 빠른 분석이 가능합니다.
✔ 매출 및 재고 트렌드를 분석하는 데 적합합니다.
장점과 한계
✅ 장점
- 장기적인 매출 및 재고 추세 분석 가능
- 데이터 집계가 미리 이루어져 쿼리 성능이 우수함
- KPI 모니터링 및 수요 예측이 용이
⚠ 한계
- 개별 트랜잭션 정보를 포함하지 않음 → 상세 분석 불가능
- 실시간 데이터 반영이 어렵고 스냅샷 주기가 길면 변동성을 놓칠 수 있음
➡ 활용 사례: 매출 분석, 월별 재고 최적화, KPI 관리
3. 누적 스냅샷 팩트 테이블 (Accumulating Snapshot Fact Table)
누적 스냅샷 팩트 테이블은 명확한 시작과 끝이 있는 프로세스를 추적하는 방식입니다. 예를 들어, 주문이 접수된 후 결제, 배송, 도착까지의 프로세스를 관리하는 데 활용됩니다. 각 프로세스의 주요 마일스톤을 업데이트하면서 진행 상황을 반영하는 것이 특징입니다.
구조 및 주요 특징
- 발생 시점: 특정 프로세스의 마일스톤 단계
- Grain(단위): 하나의 프로세스(예: 주문)당 1행
- 측정값(Facts): 마일스톤 간 소요 시간, 진행률, 상태 등
- 주요 차원(Dimensions): 주문 ID, 고객, 제품, 프로세스 상태 등
- 업데이트 여부: 있음 (진행 상태 반영)
예제 (주문 처리 시스템)
주문 ID | 주문 접수일 | 결제 완료일 | 배송 시작일 | 배송 완료일 | 주문 상태 | 처리 기간(일) |
ORD1001 | 2024-02-01 | 2024-02-02 | 2024-02-05 | 2024-02-07 | 배송 완료 | 6 |
ORD1002 | 2024-02-03 | 2024-02-04 | 2024-02-07 | 2024-02-10 | 배송 완료 | 7 |
✔ 초기에는 일부 데이터(배송 날짜 등)가 NULL이며, 진행될수록 업데이트됩니다.
✔ 프로세스 진행 시간을 계산하고 병목 현상을 분석하는 데 유용합니다.
장점과 한계
✅ 장점
- 프로세스 진행 상황을 실시간으로 반영 가능
- 병목 현상 분석 및 운영 효율성 최적화 가능
⚠ 한계
- 지속적인 업데이트가 필요하여 OLAP 성능 관리가 까다로움
➡ 활용 사례: 주문 처리 추적, 프로젝트 진행 관리, 물류 최적화
결론
✔ 트랜잭션 팩트 테이블: 개별 이벤트 분석
✔ 정기 스냅샷 팩트 테이블: 장기적인 추세 분석
✔ 누적 스냅샷 팩트 테이블: 프로세스 진행 추적
이 세 가지 방식을 병행하면 재고 데이터를 보다 효과적으로 관리하고 분석할 수 있습니다.
이와 같이 재고 테이블에 대해서 정리를 하게 된 계기는 이번주에 재고 테이블이 선입 선출 형태로 데이터를 관리하고 있다고 표현하는 걸 들었기 때문입니다. 선입선출법이란 먼저 들어온 게 먼저 나갔다고 치는 것을 의미하는 것입니다. 매일 재고량을 기록할 뿐 어떤 물품이 어떻게 움직였는지는 따지지 않는 관리방법입니다. 오늘 정리한 내용을 기준으로 생각했을 때는 정기 스냅샷 팩트 테이블이라고 할 수 있겠죠. 매일 특정 제품이 몇개 있는지만 체크하는 걸로 어제보다 늘었냐 줄었냐의 데이터만 생성될 뿐이기에 세부적인 내용을 알기는 어렵지만 데이터가 비교적 적고 추세를 파악하기에는 좋다는 장점이 있습니다. 어느 정도 규모가 있는 재고 데이터에 대한 분석은 대부분 정기 스냅샷 방식으로 이루어질 것으로 보입니다.
블로그 글의 내용은 랄프 킴벌의 데이터웨어하스 툴킷 4장 인벤토리 부분을 참조하였습니다.
'DW' 카테고리의 다른 글
SCD(Slow Change Dimension) 유형 정리 (0) | 2025.03.17 |
---|---|
SAP DataSphere 데이터 플로우에서 테이블 삭제 후 재생성 불가 이슈 해결 방법 (0) | 2025.02.19 |
센티피드 테이블과 데이터 웨어하우스에서의 활용 (0) | 2025.02.17 |
Surrogate Key 개념 정리 및 SAP에서의 활용 비교 (2) | 2024.12.18 |