*쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.
1. CUBE 뷰와 쿼리 뷰란?
SAP ABAP 환경에서 CDS 뷰는 데이터를 모델링하여 SAC와 같은 분석 도구에서 활용할 수 있도록 합니다. CUBE 뷰와 쿼리 뷰는 분석 데이터 처리 과정에서 서로 다른 역할을 수행합니다.
CUBE 뷰
- 정의: @Analytics.dataCategory: #CUBE와 @VDM.viewType: #COMPOSITE로 정의되며, 분석용 데이터 모델을 구성합니다.
- 역할: 여러 테이블이나 CDS 뷰에서 데이터를 가져와 조인, 집계, 변환을 통해 다차원 분석에 적합한 구조를 만듭니다.
- 특징:
- 집계 로직(예: 합계, 평균)을 정의합니다.
- 권한 검사(@AccessControl.authorizationCheck: #CHECK)를 통해 데이터 보안을 관리합니다.
- 백엔드에서 성능 최적화와 데이터 무결성에 초점을 맞춥니다.
- 최종 사용자가 직접 사용하지 않고, 쿼리 뷰의 데이터 소스로 활용됩니다.
쿼리 뷰
- 정의: @Analytics.query: true와 @VDM.viewType: #CONSUMPTION으로 정의되며, 최종 사용자용 데이터 소비를 위해 설계됩니다.
- 역할: CUBE 뷰의 데이터를 SAC에서 보고서나 대시보드로 표시할 수 있도록 필드 레이블, 필터, 표시 축 등을 설정합니다.
- 특징:
- 사용자 친화적인 레이블(예: matnr → “자재코드”)과 필터 설정을 제공합니다.
- 권한 검사는 일반적으로 생략하며, CUBE 뷰의 보안을 따릅니다.
- SAC에서 직관적인 데이터 탐색과 시각화를 지원합니다.
2. 왜 CUBE 뷰와 쿼리 뷰를 모두 사용하나?
SAP의 분석 아키텍처는 데이터 준비(CUBE 뷰)와 데이터 소비(쿼리 뷰)를 분리하여 효율성과 유연성을 극대화합니다. 두 뷰를 모두 사용하는 이유는 다음과 같습니다.
역할 분리
- CUBE 뷰는 복잡한 조인, 집계, 데이터 변환을 처리하여 데이터 무결성과 성능을 보장합니다.
- 쿼리 뷰는 SAC 사용자에게 데이터를 직관적으로 표시하고, 필터링 및 시각화 설정을 간소화합니다.
재사용성
- 하나의 CUBE 뷰를 여러 쿼리 뷰에서 재사용할 수 있습니다. 예를 들어, 자재 재고 데이터를 기반으로 요약 보고서와 상세 보고서를 각각 다른 쿼리 뷰로 만들 수 있습니다.
성능 최적화
- CUBE 뷰는 SAP HANA의 인메모리 기능을 활용해 데이터 처리를 최적화합니다.
- 쿼리 뷰는 불필요한 로직을 배제하고 CUBE 뷰의 데이터를 빠르게 표시하여 SAC 쿼리 성능을 향상시킵니다.
사용자 경험
- 쿼리 뷰는 SAC 사용자에게 직관적인 레이블과 필터를 제공하여 비기술적 사용자도 쉽게 보고서를 작성할 수 있습니다.
- 예를 들어, werks 필드를 “플랜트”로 표시하거나 필수 필터를 설정해 데이터 조회를 간편하게 만듭니다.
보안 및 유지보수
- CUBE 뷰는 권한 검사를 통해 데이터 접근을 제어합니다.
- 쿼리 뷰는 백엔드 로직을 노출하지 않아 유지보수가 간편하며, 데이터 모델 변경은 CUBE 뷰에서만 처리하면 됩니다.
3. CUBE 뷰만 사용하면 안 되나?
CUBE 뷰만으로 SAC에서 데이터를 조회하는 것은 기술적으로 가능하지만, 다음과 같은 이유로 권장되지 않습니다:
- 표시 설정 부족: CUBE 뷰는 SAC 보고서의 축 배치(행/열)나 필터 설정을 정의하지 않아 사용자가 수동으로 구성해야 합니다.
- 사용자 경험 저하: 기술적인 필드명(예: matnr, werks)은 비전문가에게 혼란을 줄 수 있습니다.
- 유연성 제한: 다양한 보고서 요구사항을 충족하려면 CUBE 뷰를 수정해야 하며, 이는 유지보수를 복잡하게 만듭니다.
- 성능 문제: SAC에서 CUBE 뷰를 직접 쿼리하면 비효율적인 보고서 구성이 발생할 수 있습니다.
4. 예제를 통한 이해
아래는 자재 재고 데이터를 분석하기 위한 CUBE 뷰와 쿼리 뷰의 간단한 예제입니다.
CUBE 뷰: 자재 재고 데이터 모델
이 뷰는 자재 마스터, 재고 테이블, 플랜트 데이터를 조인하여 분석용 데이터셋을 생성합니다.
@AbapCatalog.sqlViewName: 'ZMAT_STOCK' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: '[SAC] 자재 재고 분석' @VDM.viewType: #COMPOSITE @Analytics: { dataCategory: #CUBE } define view ZSAC_MAT_STOCK as select from mard as a left outer join mara as b on a.matnr = b.matnr left outer join t001w as c on a.werks = c.werks { key a.matnr, key a.werks, key b.mtart, c.name1 as plant_name, @DefaultAggregation: #SUM a.labst as stock_qty, b.ernam, b.erdat }- 설명: 자재 번호(matnr), 플랜트(werks), 자재 유형(mtart), 재고 수량(labst) 등을 포함하며, stock_qty는 합계로 집계됩니다. 권한 검사를 통해 보안을 유지합니다.
쿼리 뷰: 자재 재고 조회
이 뷰는 CUBE 뷰를 기반으로 SAC 보고서용 데이터를 구성합니다.
@AbapCatalog.sqlViewName: 'ZMAT_STOCK_QRY' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @VDM: { viewType: #CONSUMPTION } @Analytics: { query: true } @EndUserText.label: '[SAC] 자재 재고 조회' define view ZSAC_MAT_STOCK_QRY as select from ZSAC_MAT_STOCK { @AnalyticsDetails: { query: { axis: #ROWS } } @Consumption: { filter: { selectionType: #SINGLE, multipleSelections: false, mandatory: true } } @EndUserText.label: '자재 번호' key matnr, @AnalyticsDetails: { query: { axis: #ROWS } } @EndUserText.label: '플랜트' key werks, @AnalyticsDetails: { query: { axis: #ROWS } } @EndUserText.label: '플랜트 이름' plant_name, @AnalyticsDetails: { query: { axis: #ROWS } } @EndUserText.label: '자재 유형' mtart, @AnalyticsDetails: { query: { axis: #COLUMNS } } @EndUserText.label: '재고 수량' stock_qty }- 설명: matnr, werks 등을 행으로 배치하고, stock_qty를 열로 표시합니다. 필수 필터를 설정하여 SAC에서 특정 자재와 플랜트를 선택하도록 유도합니다.
5. 결론
CUBE 뷰와 쿼리 뷰는 SAP SAC에서 데이터 분석을 효율적으로 수행하기 위한 필수 구성 요소입니다. CUBE 뷰는 데이터 모델링과 집계를 담당하며, 쿼리 뷰는 사용자 친화적인 표시와 상호작용을 제공합니다. 이 계층적 접근 방식은 확장성, 사용성, 성능, 유지보수성을 보장합니다.
*쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.