앞선 글에서는 InfoObject와 InfoProvider를 알아 보았다. 이번 글에서는 SAP BW에서 데이터를 로드하기 위한 flow에 대해 알아보겠다.
마스터 데이터
- 마스터 데이터를 로드 하려면 특성 InfoObject를 정의해야 한다. 특성에는 속성, 텍스트, 계층 구조로 3가지 유형의 마스터 데이터가 있다. 마스터 데이터를 로드할 때 세개를 모두 로드 하거나, 특정 하나의 마스터만 로드할 수도 있다.
- 아래 그림의 예시는 Source System으로부터 Product라는 마스터를 추출해오는 예시이다.
Product ID특성은 가 HT-1000라는 Product ID에 대해서 텍스트값인 Noteb. 15라는 값을 가지고 있고 Category 속성으로는 C를 갖고 있다.
- Hierarchie는 Optional로 로드 할 수 있으며, 각 특성의 계층을 나타낼 수 있다.
- 세가지 유형의 마스터 데이터는 모두 DataSource, Transformations, Data Transfer Processes(DTP)와 같은 흐름 개체를 이용하여 로드할 수 있다.
트랜잭션 데이터
- 트랜잭션 데이터는 판매 주문 처리 등의 다양한 비즈니스 프로세스를 실행하여 source system에서 생성 된다.
ERP Source에 아래와 같은 필드의 데이터가 있다고 가정한다.
이를 BW로 차례로 로드하는 과정은 다음과 같다.
- 데이터 소스로 로드 한다. 이 때 필드는 원본 Source와 동일한 이름/형태로 로드한다.
- TR과 DTP를 이용해 Staging ADSO로 업로드 한다.
이때도 필드명과 데이터 유형은 변동되지 않는다.
- 스탠다드 ADSO로 업로드 한다.
이 단계에서 각 필드에 맞는 InfoObject에 데이터를 업로드 하며 데이터 클렌징을 진행한다.
아래 예시에서 Sales Order Item 앞자리에 있는 숫자 0을 제거하는 과정을 진행한다.
- Composite Provider를 생성한다.
Composite Provider는 데이터를 저장하지 않는 영역이다.(SQL의 View와 같은 영역)
이 때 필요한 InfoObject만 선택하여 보여줄수도 있다.
- BW Query를 생성하여 레포팅 한다.
최종적인 로드 결과는 아래와 같다.
트랜잭션 데이터의 Product ID를 BW의 Master로 적재 하였다. 따라서 트랜잭션에는 Text, Category, Gross Weight등의 데이터 필드가 존재하지 않았지만 최종 Query를 조회한 결과에서는 마스터 데이터를 조회 가능하다.
DataSource
- 데이터소스는 소스 시스템에서 데이터 추출을 지원하기 위해 생성된 BW개체이다.
- 데이터가 저장되지 않으며, 다음 계층으로 데이터를 전달하는데 사용되는 패스스루 객체이다.
Transformation
- Datasource와 Data Store 개체를 연결하는 역할이다.
- 각 필드에 대해 직접 맵핑을 할 수도 있고, 데이터 연산이나 추가, 서식 지정 등 가공하는 로직을 적용할 수도 있다.
- DataSource와 Datastore 객체 사이에 위치한다.
DTP
- 로드할 데이터를 결정하는 필드와 오류 처리 방법을 결정하는 등의 설정을 지정할 수 있다.
- DataSource나 Datasotre 개체와 같은 소스 - 대상 사이에 위치한다.
- 데이터를 로드하기 위해 실행하는 객체이다.
ADSO : Staging
- 값을 변경하지 않고 소스 시스템과 동일한 형식으로 데이터를 저장한다.
- 로드된 데이터의 모든 변경사항을 저장하여 기록을 유지한다.
- 추후 데이터를 재사용해야 하는경우를 대비하여 저장하는 영역이다.
ADSO : Standard 및 InfoObject 기반
- 통합되고 정리된 데이터를 세부적인 수준(e.g. 영업 주문 및 영업 주문 항목의 세분성)으로 저장하는데에 사용된다.
- 보고서(Report)에서 마스터 데이터를 사요하려면 항상 InfoObject를 생성하여 사용해야 한다.
Composite Provider
- Virtual 계층으로, 런타임에 데이터가 생성된다
- Union 혹은 Join을 사용하여 여러 소스의 데이터를 결합한다.
- 추가로 계산된 값, 필터 및 집계를 포함할 수 있다.
Shared Master Data
위의 트랜잭션 데이터 업로드 예시를 통해서 마스터데이터는 자동으로 트랜잭션 데이터와 결합 됨을 알 수 있었다. 위 예시에서 Product ID가 제품 마스터 데이터에 연결 되어 텍스트 , 카테고리 등 추가 속성 데이터를 제공하였다.
만약 위 예시에서 고객에 대한 마스터 데이터도 로드 했다면 국가 및 할인율과 같은 고객에 대한 추가 정보도 조회 할 수 있다.
트랜잭션 데이터와 별도로 마스터 데이터를 로드하고 저장하는 이유는 특성을 사용하는 모든 트랜잭션 데이터에서 공통 마스터 데이터를 공유할 수 있기 때문이다.
위 그림의 예시 처럼 제품(Product)마스터 데이터를 로드하면 제품에 포함된 여러 속성을 다른 ADSO에서도 활용이 가능하다.
트랜잭션 데이터를 업로드하기 전에 마스터 데이터를 로드 하는것이 좋다. 트랜잭션 데이터를 로드하는 동안 로드된 마스터 데이터를 참조하여 트랜잭션 값이 유효한지 확인하기 때문이다.
데이터 통합 및 배포
데이터가 소스 시스템에서 최종 쿼리까지의 경로로 이어진다는 것을 확인 했다. 조회한 예시는 간단한 버전이며 실제 프로덕션 환경에서는 더욱 복잡한 구조의 흐름으로 구성 된다.
다양한 BW 객체를 이용하여 소스테이터를 통합/배포 하는 데이터 흐름을 구현할 수 있다.
- 데이터 통합 예시 : 판매 소스와 반품 소스를 로드한 다음 BW에서 판매에 대한 실제 상황 파악
- 데이터 배포 예시 : 북부와 남부의 매출이 포함된 단일 소스에서 데이터를 로드 후, 별도의 개체에 배포하고 북부와 남부에 대한 다른 가격 규칙에 따라 로드된 데이터에 조정을 적용한다.