목차

     

     

    실무진들은 여전히 사용하는 BI 시스템. 하지만 운영자는 없고, 문서도 없고, 담당자도 없다. 누군가는 로직을 파악해야 했고, 그 누군가가… 하필 '나'였다.  솔직히 말하면, 되고 싶지 않았다.

     

    그래도 해야지 어떡해

     

     

    가이드 문서는커녕, 남아 있는 자료 한 줄 없는 완전한 레거시 시스템. 게다가 검색해봐도 대부분 SAP 공식 문서뿐, 원하는 정보는 도무지 나오질 않았다.이 시스템, 나 혼자 분석해서 이해하고 정리하는 데 시간이 참 오래 걸렸다. 그래도 이왕 고생한 김에,*나처럼 '뜬금없이 BI 시스템 분석을 맡게 된 누군가'에게 도움이 되길 바라는 마음으로, 끄적여본다


     

    📌 BO 흐름

    여러 DB (**SAP, 오라클 등) 에서 데이터를 가져와서 Universe 에 집합 시켜준다. 여기서 Universe 가 무엇인지 개념에 대해 알아보자

     

    📌 SAP BusinessObjects Universe Designer란?

    SAP BusinessObjects Universe는 데이터베이스와 BI 도구(Web Intelligence, Dashboard 등) 사이에서 시맨틱 계층(Semantic Layer) 역할을 수행합니다. 이를 통해 비즈니스 사용자는 복잡한 데이터베이스 구조나 SQL을 몰라도, 친숙한 비즈니스 용어를 사용하여 데이터를 조회하고 분석할 수 있습니다.

     

    짜란, 요롷게 생겼답니다. ERD 같죠?

     

     Universe Designer로 할 수 있는 일

    1. 기존 Universe 열기, 편집, 삭제
      • BO 서버에 저장된 Universe를 불러와 수정 가능
    2. 시맨틱 계층 설계
      • 실제 DB 객체를 비즈니스 용어로 바꿔 표현 (예: PROD_CD → “상품코드”)
    3. 클래스/객체 생성 
      • 관련된 데이터들을 묶는 ‘클래스’를 만들고, 그 안에 ‘객체(컬럼)’을 넣습니다.
      • 예:
        • 클래스: 고객
        • 객체: 고객ID, 고객명, 주소, 성별 등
    4. 조인 관계 정의
      • 여러 테이블을 연결할 때 필요한 조인을 정의할 수 있어요.
    5. BO 서버에 Universe 게시
      • 만들어진 Universe는 .unv 파일로 저장되고, BI 툴(WebI 등)에서 바로 사용할 수 있어요.

     

     

    Universe의 주요 구성 요소

    1. 클래스(Class)

     

     

    클래스는 관련된 객체들을 논리적으로 그룹화한 것입니다. 일반적으로 차원(Dimension)과 세부정보(Detail)는 하나의 클래스에, 측정값(Measure)은 별도의 클래스에 배치합니다. 필요에 따라 하위 클래스(Sub-class)로 세분화할 수 있습니다.

    • 차원 클래스: 거래 유형 간에 공유되는 객체로, 거래를 설명하고 요약 수준을 제공합니다.
    • 측정값 클래스: 숫자 결과를 표시하는 주요 보고 객체입니다.
    • 애플리케이션 클래스: 사용자 정의 값 목록, 프롬프트, 조건 객체 등 보고 애플리케이션을 지원하는 객체를 포함합니다.

     

    2. 객체(Object)

     

     

    객체는 데이터베이스 테이블이나 뷰의 필드 또는 열을 나타냅니다. 객체는 이름, 데이터 유형, SELECT 문, 경우에 따라 WHERE 문을 포함할 수 있습니다. 단일 필드를 참조하거나 여러 필드의 표현식일 수 있습니다.

    • 차원(Dimension): 쿼리의 주요 설명 값으로, 텍스트나 날짜 값입니다.
    • 세부정보(Detail): 차원에 대한 자세한 정보를 제공하는 텍스트 값입니다. 항상 차원에 연결됩니다.
    • 측정값(Measure): 쿼리 결과의 숫자 값으로, 차원을 기준으로 비교됩니다.

     

    3. 테이블(Table)

     

     

    Universe에서 테이블은 데이터베이스의 실제 테이블, 뷰 또는 동의어를 참조합니다. Universe 자체에는 데이터가 저장되지 않으며, 테이블은 데이터베이스의 필드를 가리키는 포인터 역할을 합니다.

    • 차원 테이블: 고객, 제품, 날짜, 지역 등 설명 값을 포함합니다.
    • 팩트 테이블: 쿼리에서 계산될 숫자 정보를 포함합니다.

     

    4. 조인(Join)

     

    조인은 테이블, 뷰, 동의어 또는 별칭 간의 관계를 정의합니다. 이를 통해 Universe는 여러 테이블의 정보를 결합할 수 있습니다.

    • 동등 조인(Equi-join): 두 테이블의 열 값에 기반한 조인입니다.
    • 외부 조인(Outer join): 한 테이블에 다른 테이블의 공통 열과 일치하지 않는 행이 있는 경우에도 연결합니다.
    • 세타 조인(Theta join): 두 열 간의 동등성 외의 관계를 기반으로 테이블을 연결합니다.
    • 자기 제한 조인(Self-Restricting join): Universe 구조에서 테이블에 제한을 설정하는 방법입니다.

     

    5. 컨텍스트(Context)

     

    컨텍스트는 쿼리 내에서 발생할 수 있는 루프를 해결하기 위해 특정 경로를 정의하는 테이블과 조인의 그룹입니다. 이를 통해 쿼리에서 단일 SELECT 문이 하나의 경로만을 참조하도록 보장합니다.

    6. 별칭(Alias)

     

    별칭은 다른 이름을 가진 Universe 테이블의 정확한 복제본입니다. 동일한 테이블을 Universe 구조에 여러 번 포함시키고, 각 인스턴스를 구별할 수 있게 합니다. 주로 조회 테이블을 여러 번 참조해야 하거나 다른 조인 규칙이 필요한 경우에 사용됩니다.

    7. 값 목록(List of Values)

     

    값 목록은 특정 객체와 관련된 데이터 값을 포함하는 데이터 목록입니다. 데이터베이스 테이블이나 외부 파일 소스에서 데이터를 가져올 수 있으며, 목록에 표시되는 데이터의 양과 유형에 대한 제한을 정의할 수 있습니다.

    8. 계층 구조(Hierarchy)

     

    계층 구조는 차원의 순서화된 시퀀스로, 사용자가 데이터를 다양한 관점에서 다차원 분석할 수 있게 합니다. 이를 통해 트렌드나 예외를 식별할 수 있습니다.

    • 드릴다운(Drill-Down): 점점 더 자세한 수준의 데이터를 표시합니다.
    • 드릴업(Drill-Up): 덜 자세한 수준 또는 더 높은 요약 수준의 데이터를 표시합니다.
    • 드릴스루(Drill-Through): 계층 구조의 가장 낮은 수준보다 더 낮은 수준의 데이터를 직접 쿼리할 수 있습니다.
    • 드릴바이(Drill-By): 계층 구조의 특정 수준에서 데이터를 표시합니다.

     


    📌 SAP BusinessObjects Data Services 란?

    SAP BO Data Services는 신뢰할 수 있는 데이터를 확보하고, 이를 분석 가능한 형태로 데이터 웨어하우스(DW)에 적재하기 위한 ETL(Extract, Transform, Load) 도구입니다.
    데이터 통합은 물론이고, 데이터 품질 관리, 프로파일링, 실시간 처리까지 폭넓은 기능을 제공합니다.

     

    주요 구성 요소

    1. ETL 개발 인터페이스 – Data Integrator Designer

    • 다양한 데이터 소스를 변환, 처리할 수 있는 GUI 기반 개발 도구
    • 실시간 작업, 일괄 처리 작업 모두 지원
    • 사용자 정의 함수, 조건부 처리 등 고급 변환도 가능
    • 팀 단위 개발을 위한 중앙 저장소 연동 지원
      •  예: 고객 데이터에서 휴대폰 번호 정제 + 이름 표준화 처리 작업 등을 GUI로 정의

    2. 작업 실행 엔진 – Data Integrator Job Server

    • Designer에서 만든 ETL 작업을 실제로 실행하는 엔진
    • 일괄처리(batch)와 실시간 데이터 처리 모두 지원

    3. 웹 관리자 – Data Services Management Console

    • 작업 예약, 모니터링, 서버 설정 등 전반적인 관리 기능 수행
    • 관리자가 사용할 수 있는 웹 기반 인터페이스
    • 주요 기능:
      • 일괄 작업 예약 및 실행 관리
      • 실시간 서버 시작/중지
      • Job Server, Access Server 구성
      • 어댑터 연결 및 관리
      • 팀 저장소 및 메타데이터 저장소 관리

     

    소스 계층

    소스 계층에는 SAP 애플리케이션과 비 SAP RDBMS 시스템 같은 다양한 데이터 소스가 포함되며, 데이터 통합은 스테이징 영역에서 이루어집니다.

     

    SAP Business Objects Data Services에는 Data Service Designer, Data Services Management Console, Repository Manager, Data Services Server Manager, Workbench 등 다양한 구성 요소가 포함되어 있습니다. 대상 시스템은 SAP HANA, SAP BW와 같은 DW 시스템이나 SAP가 아닌 데이터웨어하우스 시스템이 될 수 있습니다.

     

     

     

    BODS 아키텍처

     

     

     

    데이터 흐름(Data Flow) 이란?

    데이터 흐름(Data Flow)은 소스 시스템에서 데이터를 추출(Extract)한 후, 필요한 가공(Transform)을 거쳐 대상 시스템(Target)에 적재(Load)하는 전체 흐름을 정의한 작업 단위입니다.

     

     

     

    이 안에서 모든 변환, 포맷팅, 로딩 작업이 이루어지며, 실질적인 ETL의 실체라고 할 수 있죠.

     

      ✔ 소스 시스템: DB, CSV, Excel 등 다양한 형식 가능

      ✔ 변환 로직: 필터링, 조인, 계산, 매핑 등

      ✔ 대상 시스템: 데이터 웨어하우스, 마트 등

    데이터 흐름 이름은 관례적으로 DF_ 접두어를 붙여 관리합니다.
    예: DF_Load_SalesData, DF_ETL_Customer_Merge

     

    데이터 흐름 구성 요소

    데이터 흐름에는 크게 세 가지 유형의 객체가 포함됩니다:

    원천(Source) 데이터를 가져오는 시작점 (예: 테이블, 파일 등)
    변형(Transform) 데이터를 가공/처리하는 단계 (예: 쿼리, 조건 분기 등)
    대상(Target) 처리된 데이터를 저장할 곳 (예: DW 테이블)

     

    예제: 두 개의 소스 테이블을 하나의 팩트 테이블로 로드

    가령 두 개의 소스 테이블이 있고, 이를 조인하여 하나의 팩트 테이블로 적재한다고 가정해봅시다.

     

    Step 1. 소스 테이블 배치
    – 로컬 개체 라이브러리(Local Object Library)에서 필요한 소스 테이블 2개를 작업 공간으로 드래그합니다.

     

    Step 2. 쿼리 변환 추가
    – 오른쪽 도구 모음에서 ‘Query Transform’을 드래그하여 추가합니다.
    – 두 소스 테이블을 조인하고, 필요한 컬럼만 선택하거나 가공 로직을 추가할 수 있습니다.

     

    Step 3. 대상 테이블 생성 (템플릿)
    – 쿼리 박스를 우클릭 > “New” > “Template Table”을 선택해 대상 테이블을 만듭니다.
    – 이 테이블은 아직 실제 DB에 생성되지 않은 논리적 객체입니다.

     

    Step 4. 대상 테이블 속성 설정
    – 테이블 이름, 저장소 이름, 생성할 스키마(소유자) 등을 지정합니다.

     

    Step 5. 쿼리와 대상 테이블 연결
    – 대상 테이블을 쿼리 변환에 연결해 데이터 흐름을 마무리합니다.

     

    매개변수(Parameter) 사용하기

    데이터 흐름 내에서는 매개변수(변수값)를 활용해 유연하게 작업을 처리할 수 있습니다.

    예를 들어:
    p_last_updated_date라는 매개변수를 사용하면 "마지막 업데이트 이후의 데이터만 추출" 같은 조건을 쉽게 걸 수 있습니다.

     

    이런 매개변수는 워크플로우나 작업(Job)에서 설정해서 데이터 흐름에 넘겨줄 수 있으며, 데이터 흐름 내 쿼리나 조건에서도 참조가 가능합니다.

     

     

    실시간 ETL, SAP BODS의 Real-Time Job 이해하기

    데이터는 더 이상 하루에 한 번 배치로만 처리되면 충분하지 않습니다. 실시간 알림, 주문 처리, 상태 반영 등 빠른 데이터 반응이 필요한 상황이 늘고 있죠.


    SAP BODS(SAP BusinessObjects Data Services)는 실시간 처리 기능을 통해 이 같은 요구를 충족시킬 수 있습니다. 이번 글에서는 SAP BODS에서의 실시간 작업(Real-Time Job) 개념과 구성 방법, 임베디드 데이터 흐름(Embedded Data Flow)까지 함께 알아봅니다.

     

    실시간 작업이란?

    이름 그대로 들어오는 메시지를 실시간으로 처리하는 ETL 작업입니다.

    • 데이터를 메시지 기반으로 수신
    • 즉시 추출 → 변환 → 로드 수행
    • 배치처럼 스케줄러가 아닌 액세스 서버(Access Server)를 통해 동작
    실시간 서비스는 메시지를 기다리다가 수신되면, 해당 메시지를 처리하고 결과를 반환합니다. 관리자가 중단하기 전까지 계속 작동합니다.

     

    실시간 작업 만들기 (단일 흐름 모델)

    Step 1. 프로젝트 생성
    → Data Services Designer에서 새 프로젝트 생성

     

    Step 2. 새 실시간 작업 생성
    → 프로젝트 창에서 우클릭 > “New Real-Time Job”

    작업 공간은 실시간 작업의 두가지 구성 요소를 보여줍니다.
    실시간 작업의 시작과 끝을 보여줍니다.

    Step 3. 데이터 흐름 추가
    → Tool Palette에서 Data Flow 객체를 작업 공간에 드래그
    → 루프 구조(Loop) 내에 배치

     

    Step 4. 시작점(START), 종료점(END)과 연결
    → 데이터 흐름을 메시지 루프에 연결하여 작업 구성 완료

     

    Step 5. 필요한 변환 로직 추가 및 저장
    → 쿼리, 조인, 필터 등 일반적인 변환 사용 가능

     

    💡 단일 메시지 소스와 단일 대상 테이블/서비스를 처리하는 경우에 적합합니다.

     

    다중 데이터 흐름 모델

    • 하나의 실시간 작업에서 여러 데이터 흐름을 처리
    • 메시지가 들어올 때 여러 흐름을 순차적으로 실행
    • 데이터 간 순서를 보장하고, 이전 흐름이 완료되어야 다음으로 이동

     

    Embedded Data Flow (내장된 데이터 흐름) 란?

    다른 데이터 흐름에서 호출되어 사용하는 재사용 가능한 데이터 흐름 블록입니다. 이런 경우에 유용합니다:

    • 복잡한 흐름을 분리해서 가독성 확보
    • 특정 처리 로직을 여러 곳에서 반복 사용할 때
    • 디버깅을 위해 쪼개 실행할 때

     

    유형 설명
    하나의 입력 다른 흐름의 끝에서 호출
    하나의 출력 다른 흐름의 시작에서 호출
    입력/출력 없음 기존 흐름 복제용 (재사용 목적)

    정리하며

     

    어쩌다 보니 떠맡게 된 레거시 시스템 분석. 처음엔 막막하고 억울(?)했지만, 하나씩 구조를 파악하고 문서를 만들다 보니
    "아, 누군가는 이걸 정리했어야 했구나"라는 생각이 들었습니다. SAP BODS, Universe, DS, DF, Real-Time Job, 데이터 흐름, Embedded Flow…


    처음엔 낯설었던 개념들도 지금은 익숙해졌고, 이 과정에서 '누군가를 위한 문서가 남는다는 건 얼마나 소중한 일인가'도 새삼 느꼈습니다. 이 글이 저처럼 문서 하나 없이 SAP BO 시스템을 마주한 분들, 어디서부터 시작할지 막막한 분들에게 작은 단서가 되길 바랍니다. 

     

    고생했다 내자신

     

    제발 운영자가 없는 건 종료시키던지, 사람을 채용하던지 하라고요 ~


    • 출처

    [Universe]

    https://www.tutorialspoint.com/sap_universe_designer/sap_universe_designer_table_browser.htm

     

    SAP Universe Designer Table Browser

    Discover how to use the SAP Universe Designer Table Browser for effective data management and analysis.

    www.tutorialspoint.com

     

    [DF]

    https://www.tutorialspoint.com/sap_bods/sap_bods_dataflow_introduction.htm

     

    Introduction to SAP BODS Dataflow

    Explore the essentials of SAP BODS Dataflow and its role in efficient data integration and management.

    www.tutorialspoint.com

     

    + Recent posts