본문으로 건너뛰기
엔터프라이즈
90분

SAP ERP 영업 분석 — 원시 SD/MM 통합부터 다차원 집계, 온톨로지까지

SAP ERP 의 SD(판매 유통) · MM(자재 관리) 원시 테이블 5종을 통합·변환해 시계열·고객·자재·지역별 다차원 집계를 만들고 SAP_* 온톨로지로 그래프 탐색까지 한 사이클 통과합니다.

워크숍 목표

다 끝내고 나면 D.Hub 안에서 다음 흐름을 한 사이클 손으로 통과한 셈이 됩니다.

  • 시나리오 1개를 포털로 적재해 컬렉션 1종, 데이터셋 21종(원시 5 + 중간 6 + 통합 2 + 집계 8), 코드 노드 18종, 파이프라인 13종, 온톨로지 10엔티티/10관계, 에이전트 1종을 한꺼번에 등록합니다.
  • SAP 의 5개 원시 테이블 — VBAK (수주 헤더), VBAP (수주 라인), KNA1 (고객 마스터), MARA (자재 마스터), MAKT (자재 설명) — 을 판매-자재-고객 세 도메인으로 갈라 정제합니다.
  • 영업 + 자재 + 고객 을 한 row 에 합친 통합 마스터 테이블 tb_sales_master 를 만듭니다.
  • 시계열(연·월·일) · 지역(국가·대륙) · 분류(고객·산업·자재 타입) 7 차원으로 다차원 집계 파이프라인을 병렬 실행합니다.
  • 10엔티티 / 10관계의 SAP_* 그래프에서 한 고객이 어떤 자재를 어떤 시점에 얼마나 샀나 의 5-홉 경로를 펼쳐 봅니다.

엔터프라이즈 ERP 통합 시나리오 중 가장 데이터셋이 많은 워크숍입니다. 13 파이프라인의 의존 그래프 가 핵심입니다. 권장 소요 시간은 90분.

사전 준비

  • D.Hub 포털 접근 가능한 엔지니어 계정 (Editor 권한 이상, 파이프라인 실행 가능)
  • 약 3MB 의 zip 한 개를 받을 다운로드 여유 (다른 시나리오의 약 6×)

터미널·Python·dhub2-examples 클론은 필요 없습니다.

1. 시나리오 적재 (10분)

sap.zip 다운로드(2.9 MB)

zip 크기가 약 3MB 라 업로드 진행률이 다른 시나리오보다 길게 보일 수 있습니다. 가져오기 다이얼로그가 완료 로 바뀌면 한 컬렉션이 만들어집니다.

manifest.json 순서대로 다음 자산이 올라갑니다.

  1. 컬렉션 1종 — sap (alias: SAP ERP 영업 분석)
  2. 데이터셋 21종 — 원시 5 (tb_sap_vbak, tb_sap_vbap, tb_sap_kna1, tb_sap_mara, tb_sap_makt), 중간 6 (tb_sales_all, tb_sales, tb_customer, tb_mara_info, tb_makt_lang_filter, tb_material), 통합 2 (tb_sales_material, tb_sales_master), 집계 8 (tb_year_info, tb_month_info, tb_date_info, tb_customer_summary, tb_customer_country_summary, tb_customer_continent_summary, tb_industry_summary, tb_material_summary)
  3. 코드 18종 (Python) — 각 변환 단계 + build_sap_ontology
  4. 파이프라인 13종 — 정제 4 + 통합 1 + 집계 7 + 온톨로지 1
  5. 온톨로지 — 엔티티 10종(SAP_Customer, SAP_SalesOrder, SAP_SalesOrderLine, SAP_Country, SAP_Continent, SAP_OrderDate, SAP_OrderMonth, SAP_OrderYear, SAP_MaterialType, SAP_MaterialIndustry), 관계 10종
  6. 에이전트 — sap_assistant

적재 완료 후 좌측 트리에 sap 한 컬렉션이 보입니다. 21 데이터셋이 한 컬렉션에 다 들어가는 구조는 ERP 분석의 표준 — 도메인 경계가 모듈 (SD/MM) 단위라 컬렉션을 더 잘게 쪼개기 어렵습니다.

2. 원시 SD/MM 테이블 둘러보기 (10분)

sap 컬렉션에서 원시 5종부터 봅니다.

  • tb_sap_vbak — 수주 헤더. 컬럼: VBELN (수주 번호), ERDAT (생성일, YYYYMMDD), KUNNR (고객 번호), NETWR (순 금액), WAERK (통화)
  • tb_sap_vbap — 수주 라인. 컬럼: VBELN + POSNR (라인 번호) 복합키, MATNR (자재 번호), KWMENG (수량), NETWR (라인 금액)
  • tb_sap_kna1 — 고객 마스터. 컬럼: KUNNR, NAME1 (회사명), LAND1 (국가 코드), KTOKD (계정 그룹)
  • tb_sap_mara — 자재 마스터. 컬럼: MATNR, MTART (자재 타입), MATKL (자재 그룹/산업), MEINS (기본 단위)
  • tb_sap_makt — 자재 설명. 컬럼: MATNR, SPRAS (언어 키), MAKTX (설명 텍스트)

SAP 네이티브 컬럼명은 4~5자 약어 라 처음에는 낯섭니다. 핵심 키 세 개만 머리에 둡니다 — VBELN (수주), KUNNR (고객), MATNR (자재). 다른 컬럼은 §3 의 정제 코드 노드가 읽기 좋은 이름 으로 바꿔 줍니다.

3. 정제 파이프라인 3종 — 영업·자재·고객 (15분)

sap 컬렉션의 파이프라인 섹션에서 정제 3종을 차례로 실행합니다.

sap_pipeline_join_sales — 노드 2 단계.

  1. join_vbak_vbaptb_sap_vbak + tb_sap_vbapVBELN 으로 join → tb_sales_all (수주 1라인 = 1행)
  2. processing_order_dateERDATYYYYMMDD 문자열을 tb_salesorder_date (date) + year / month / day 파생 컬럼으로 분해

sap_pipeline_join_material — 노드 3 단계.

  1. mapping_mara_infotb_sap_mara 의 약어 컬럼을 읽기 좋은 이름 으로 매핑 → tb_mara_info
  2. filtering_makt_langtb_sap_makt 의 다국어 행 중 현재 언어 만 남김 → tb_makt_lang_filter
  3. join_mara_makt — 두 결과를 MATNR 로 join → tb_material (자재 1행 = 설명 1행)

sap_pipeline_transform_customer — 노드 1 단계.

  • processing_customer_infotb_sap_kna1 의 회사명 trim, 국가 코드(LAND1) → ISO 매핑 → tb_customer

세 파이프라인을 차례로 Run 합니다. tb_sales, tb_material, tb_customer 세 데이터셋의 미리 보기에서 각각 컬럼이 읽기 좋은 이름 으로 바뀌어 있는지 확인합니다.

4. 통합 마스터 테이블 (10분)

sap_pipeline_unification_total 파이프라인을 엽니다. 노드 2 단계로 세 도메인을 한 row 에 합칩니다.

  1. join_sales_materialtb_sales + tb_materialMATNR 로 left join → tb_sales_material (수주 라인 1행 = 자재 정보 합쳐짐)
  2. join_customer_sales_material — 그 결과 + tb_customerKUNNR 로 left join → tb_sales_master

tb_sales_master 한 행에는 다음이 모두 들어 있습니다.

  • 수주 메타 (VBELN, order_date, year, month, day)
  • 라인 메타 (POSNR, quantity, line_amount)
  • 자재 메타 (MATNR, material_type, material_industry, description)
  • 고객 메타 (KUNNR, customer_name, country, continent)

비정규화 가 의도된 설계입니다. 집계 파이프라인 7종이 이 한 테이블만 보면 시간·고객·자재·지역 어느 축으로도 group-by 가 가능합니다.

Run 을 눌러 실행. 끝나면 tb_sales_master 미리 보기에서 한 행이 위 네 영역을 다 갖고 있는지 확인합니다.

5. 다차원 집계 파이프라인 7종 (15분)

이번 단계가 ERP 분석의 분석 표면 입니다. 7 파이프라인을 병렬로 실행합니다.

시계열 3종tb_sales_masteryear / month / order_date 별 집계.

  • sap_pipeline_year_summarytb_year_info (연도별 매출·라인 수·평균 금액)
  • sap_pipeline_month_summarytb_month_info (월별)
  • sap_pipeline_date_summarytb_date_info (일별)

고객·지역 3종KUNNR / country / continent 별 집계.

  • sap_pipeline_customer_summarytb_customer_summary
  • sap_pipeline_country_summarytb_customer_country_summary
  • sap_pipeline_continent_summarytb_customer_continent_summary

분류 2종 — 자재 메타 별 집계.

  • sap_pipeline_industry_summarytb_industry_summary (자재 산업별)
  • sap_pipeline_material_typetb_material_summary (자재 타입별)

각 파이프라인을 차례로 Run 합니다. 끝나면 8개 집계 데이터셋이 모두 행 ≥ 1 인지 확인합니다.

6. 온톨로지 + 그래프 탐색 (15분)

마지막은 그래프 시점입니다. ontology_materialization 파이프라인을 Run 합니다. build_sap_ontology 가 통합 마스터와 8 집계를 batch 모드로 읽어 다음 10 엔티티 + 10 관계를 upsert 모드로 적재합니다.

엔티티 10종:

  • 거래 — SAP_SalesOrder, SAP_SalesOrderLine
  • 고객 — SAP_Customer, SAP_Country, SAP_Continent
  • 시간 — SAP_OrderDate, SAP_OrderMonth, SAP_OrderYear
  • 자재 분류 — SAP_MaterialType, SAP_MaterialIndustry

관계 10종 (주요):

  • SAP_locatedIn (고객 → 국가), SAP_PartOf (국가 → 대륙)
  • SAP_CUSTOMER_PLACED_ORDER, SAP_ORDER_ON_DATE, SAP_ORDER_HAS_LINE
  • SAP_LINE_MATERIAL_TYPE, SAP_LINE_MATERIAL_INDUSTRY
  • SAP_PartOf_YEAR, SAP_PartOf_MONTH

그래프 탐색기 에서 한 고객이 어떤 자재를 어떤 시점에 얼마나 샀나 의 5-홉 경로를 한 줄로 띄웁니다.

MATCH (c:SAP_Customer)-[:SAP_CUSTOMER_PLACED_ORDER]->(o:SAP_SalesOrder)
       -[:SAP_ORDER_HAS_LINE]->(l:SAP_SalesOrderLine)
       -[:SAP_LINE_MATERIAL_INDUSTRY]->(ind:SAP_MaterialIndustry),
      (o)-[:SAP_ORDER_ON_DATE]->(d:SAP_OrderDate)
RETURN c, o, l, ind, d
LIMIT 30

한 화면에 고객 → 주문 → 라인 → 자재 산업 4 차원이 동시에 펼쳐집니다. ERP 분석에서 교차 집계 SQL 로는 잘 안 보이는 패턴 (한 고객이 어떤 산업의 자재를 언제 몰아 사는지) 이 그래프에서 한 번에 잡힙니다.

7. 다음 단계 + 회고 (5분)

여기까지 왔다면 한 ERP 시나리오 위에서 다음 다섯 흐름을 한 번씩 통과한 셈입니다.

  • SAP 네이티브 약어 컬럼 → 읽기 좋은 이름 매핑
  • 3 도메인 정제 → 통합 마스터 비정규화
  • 7 차원 병렬 집계
  • 10 엔티티 그래프 → 다축 탐색
  • 의존 그래프 13 파이프라인의 운영 단순화

끌리는 방향으로 한 발 더:

  • 엔지니어 코스파이프라인 스케줄링 으로 가서, 정제 3종 → 통합 1종 → 집계 7종 + 온톨로지 1종 의 13 파이프라인 의존 그래프 를 일별 배치로 등록합니다.
  • sap_assistant 에이전트 에 자연어 질의를 한 사이클 돌립니다 (다음 라운드 의제).
  • 자기 도메인 ERP 모듈 (MM 재고, PP 생산, FI 회계) 을 같은 형판 — 원시 → 정제 → 통합 → 집계 → 온톨로지 — 으로 옮깁니다.

검증 체크리스트

  • 컬렉션 sap 에 데이터셋 21종이 모두 올라가 있는지 (원시 5 + 중간 6 + 통합 2 + 집계 8)
  • sap_pipeline_join_sales 실행 뒤 tb_salesorder_datedate 타입 으로 잡혀 있고 year / month 파생 컬럼이 채워졌는지
  • sap_pipeline_unification_total 실행 뒤 tb_sales_master 한 행에 수주 + 라인 + 자재 + 고객 네 영역이 다 들어 있는지
  • 시계열 집계 3종 (tb_year_info, tb_month_info, tb_date_info) 의 행 수가 연도 ≤ 월 ≤ 일 순서로 늘어나는지
  • 그래프 탐색기에서 SAP_Customer 한 노드를 시작점으로 5-홉 경로 (CustomerSalesOrderSalesOrderLineMaterialIndustry + OrderDate) 를 한 화면에 펼칠 수 있는지