개요
BW를 개발하다보면 자주 사용할 일은 없으나 간간히 보고 쓰게 되는 정보들이 있다. 그런 정보들을 한데 모아서 정리해보고자 한다.
aDSO 리포팅
aDSO에서 바로 리포팅을 하는 건 권장되지 않는다. aDSO는 데이터를 저장하는 persistance Layer로 쓰라고 있는거지 리포팅 레이어로 쓰라고 만들어진 게 아니기 때문이다. 하지만 쿼리를 만들 수는 있다. aDSO로 리포팅을하면 나타나는 특징을 다루고자 한다.
- Navigation Attribute는 ADSO에서 접근 안 됨.
- Infoobject는 Master Data Check가 No Masterdata Check/No Reporting이 아니어야 보임

- aDSO 필드는 특정 조건을 만족할 때만 리포팅에서 보임
- 필드 이름이 20자 이하
- 다음 조건 만족하는 필드 유형
- ---------특성------------------
- CHAR : 길이 1 ~ 250
- NUMC : 길이 1 ~ 250
- CUKY : 통화 키, 길이 5
- UNIT : 단위, 길이 3
- LANG : 언어 키, 길이 1
- DATS : 날짜, 길이 8
- TIMS : 시간, 길이 6
- ----------키피겨--------------------
- INT4 : 정수
- FLOAT : 부동소수점
- DEC : 길이 16 ~ 31, 소수점 0 ~ 14자리
- CURR : 길이 1 ~ 31, 소수점 1 ~ 14자리
- CUKY 특성과 연결되어야 하며, 총 길이는 소수점 자릿수 이상
- QUAN : 길이 1 ~ 31, 소수점 0 ~ 14자리
- UNIT 특성과 연결되어야 하며, 총 길이는 소수점 자릿수 이상
- 만약 필드가 직접 보이지 않는 경우 Open ODS View를 생성하여 필요한 데이터유형과 필드 이름을 지정 가능
단위/통화 참조
단위(Unit) 통화(Currency) 참조 Key Figure 모델링 방식
- infoObject 기반 방식
- key figure와 통화 단위 간의 관계는 infoObject를 통해 보장
- 상위에 위치한 compositeProvider에서도 이 관계를 인식
- 단 Key Figure와 연결된 통화 특성은 모두 리포팅에서 보여져야만 함
- 순수 필드 기반 방식
- Key FIgure와 통화 정보를 임의의 필드 타입으로 저장
- 이때 필드 타입이 리포팅 조건을 만족하면 CompositeProvider에서 표시됨
- 조건을 만족하지 않는 경우 aDSO위에 Open ODS View를 생성하여 타입과 필드 이름 등을 매핑해야 gka
- 그 후 CompositeProvider에서 Key Figure와 통화 필드 간 연결을 설정
- 필드 기반이지만 메타데이터를 활용하는 방식
- Key FIgure는 데이터 타입이 CURR이고 통화는 데이터 타입이 CUKY인 필드로 가각 생성
- 이 경우 Unit/CUrrency 입력란이 활성화 되며 해당 필드에 CUKY 타입 필드를 지정해야함
- 통화 필드는 자동으로 0CURRENCY InfoObject와 연결
- 이 연결정보는 메타 데이터에 저장되며 CompositeProvider는 이를 통해 자동으로 연결 파악


모델링 제한사항
- aDSO는 최대 120개의 Key 필드 포함 가능
- aDSO의 Key는 InfoObject, 필드, 둘의 조합으로 구성 가능
- aDSO의 전체 필드수는 최대 745개
- Non-cumulative key figure 설정 모델링시 744개
- aDSO는 리포팅 시 Nav Attribute 사용 불가능 하지만 Transformation에선 가능
aDSO Detail에서 Use Navigation Attribute in Extraction 체크 시 가능.

- CompositeProvider에서 Nav Attribute활성화 방법 - Output탭, 오른쪽 클릭, Nav Attr..

성능향상 권장 사항
- 일반적인 ADSO에서는 특성값만 저장되고 SID값은 저장 안됨. 이로 인해 SID 테이블과의 조인이 필요하여 쿼리 성능저하가 일어남
- 쿼리에서 자주 사용되는 특성이 하이 카디널리티일 때 - " Master-Data Check during Staging/Activation and persist SID in DataStore"

- SID를 저장하여 조인 성능 향상. 속성 값을 읽을 때에도 내부 조인 비교 방식이 더 빠르기에 성능이 더 좋아짐.
- Compound Characteristics에 효과적
- 시간 특성, 단위, 통화 등은 카디널리티가 낮기에 SID 저장 안 됨
파티셔닝
파티셔닝은 전체 데이터를 중복 없이 독립적 여러 단위로 분할
- 성능향상
- 대량 데이터 적재 시 필수
한 파티션 당 2^31 약 21억 개 레코드만 저장 가능
- Data Tiering Optimization 사용 시 파티셔닝 필요
1. 기본 파티셔닝
- 모든 ADSO 테이블 적용
- ADSO 생성 시점부터 기본적 활성화
- 기본적으로 해시 기반 파티셔닝 수행하여 데이터를 HANA의 여러 스케일아웃 노드에 분산
- SAP HANA 내부에는 TABLE_PLACEMENT라는 커스터마이징 테이블이 있어 이 설정을 기반으로 landscape redistribution이 실행되어 ADSO 테이블이 파티셔닝 됨
2. Automatic Secondary Level Partitioning (자동)
- ADSO의 Inbound 테이블과 Change Log 테이블에 대해 Request TSN을 기준으로 Range 파티셔닝이 자동 적용
3. Manual Secondary Level Partioning (수동)
- ADSO 모델링 UI의 Setting 탭에서 설정 가능한 범위 기반 파티셔닝
- 일반적으로 시간, 국가, 회사코드 등으로 파티셔닝
- 이 파티셔닝은 활성화 테이블에만 적용 -> 데이터 마트 ADSO의 데이터를 활성화하지 않으면 파티셔닝이 적용안됨

4. SAP 권장 사항
- 의미기반 파티셔닝
- 하나의 큰 ADSO를 물리적으로 나누기보다는 논리적으로 여러 개의 ADSO로 나누어 관리
- 데이터 티어링 최적화 (Data Tiering Optimization, DTO)
- 자주 사용되지 않는 데이터나 이력 데이터를 다른 저장소에 이동
인덱스
- 복잡한 룩업 등을 위해서 aDSO에 보조 인덱스를 추가 생성 가능
- 인덱스는 Active Table에 생성. Active Table이 존재하지 않는 경우 Inbound Table에 생성
- 단 인덱스는 SAP HANA 메모리 사용량 및 인덱스 갱시 시 자원 처리량을 소모

'BW' 카테고리의 다른 글
SAP HANA 주요 개념 정리 (0) | 2025.03.18 |
---|---|
LSA++ 아키텍처 (0) | 2025.03.10 |
SAP Certi C_BW4H 합격 후기 (0) | 2025.03.02 |
SAP 러닝허브 구독 후 (0) | 2025.02.19 |
BW - 개념정리 (1) | 2024.12.09 |