QueryBridge2026년 7월 10일 / 8분 읽기

SAP CDS 분석 쿼리를 자연어로 물어보게 만드는 법

"이번 달 사업부별 매출과 영업이익을 전월 대비로 보여줘"라고 물으면 SAP가 집계된 숫자로 답하게 하려면 무엇이 필요할까요? 단건 조회용 OData와 달리, 경영 분석 질의는 CDS Analytical Query를 MCP 도구로 바꿔야 합니다. 그 원리와 자동화 방법을 정리합니다.


1. 분석 질의는 데이터 조회와 다르다

앞선 글에서 SAP OData 서비스를 MCP 도구로 바꾸는 법을 다뤘습니다. OData는 “판매오더 12345의 상태를 보여줘”처럼 특정 레코드를 조회하고 다루는 업무 트랜잭션에 강합니다. 그런데 현업과 경영진이 AI에게 진짜 묻고 싶은 질문은 대개 이런 모양입니다.

“이번 달 사업부별 매출과 원가율, 영업이익을 전월 대비로 분석해줘.”

이건 레코드 한 건을 꺼내는 일이 아닙니다. 수많은 전표를 사업부라는 축으로 묶고, 매출과 영업이익을 합산하고, 전월과 비교하는 집계 작업입니다. OData로 원본 데이터를 통째로 내려받아 모델이 직접 더하게 하는 방식은 느리고, 부정확하고, 데이터 양이 조금만 커져도 무너집니다.

집계와 분석은 **분석 쿼리(analytical query)**의 영역입니다. 다행히 SAP에는 이미 이걸 위해 만들어진 자산이 있습니다.

2. SAP CDS Analytical Query가 최적의 출발점인 이유

S/4HANA는 분석을 위해 CDS Analytical Query를 제공합니다. @Analytics.query: true로 표시된 CDS View로, 그 안에는 분석에 필요한 요소가 이미 구조화되어 있습니다.

  • 차원(dimension) - 데이터를 나누는 축. 사업부, 기간, 제품, 거래처 등
  • 측정값(measure) - 합산이나 평균 등으로 집계되는 지표. 매출, 수량, 영업이익 등
  • 변수(variable) - 실행 시점에 값을 받는 파라미터. 회계연도, 기준 통화 등

즉, “이 쿼리는 무엇을 어떤 축으로 집계할 수 있는지”가 메타데이터에 담겨 있습니다. OData의 $metadata가 필드 명세를 기계가 읽을 수 있게 했듯이, Analytical Query는 분석의 구조 자체를 기계가 읽을 수 있게 노출합니다. AI 분석 도구로 바꾸기에 이보다 좋은 출발점이 없습니다.

개념을 단순화하면 이런 형태입니다.

Query: C_SalesByProfitCenter
  Dimensions: ProfitCenter, FiscalPeriod, ProductGroup
  Measures:   NetRevenue, CostOfGoods, OperatingProfit
  Variables:  FiscalYear, DisplayCurrency

3. Analytical Query → MCP, 변환의 핵심 원리

변환의 본질은 쿼리의 차원, 측정값, 변수를 MCP 도구의 입력 스키마로 매핑하는 것입니다. 어떤 축으로 나눌지(차원), 무엇을 집계할지(측정값), 어떤 조건을 걸지(변수/필터)가 그대로 도구 파라미터가 됩니다. 위 쿼리는 이런 MCP 도구 하나로 바뀝니다.

{
  "name": "analyze_sales_by_profit_center",
  "description": "사업부(수익센터)별 매출, 매출원가, 영업이익을 기간과 제품군 기준으로 집계합니다.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "groupBy":  { "type": "array", "description": "집계 축: ProfitCenter, FiscalPeriod, ProductGroup 중 선택" },
      "measures": { "type": "array", "description": "집계 지표: NetRevenue, CostOfGoods, OperatingProfit" },
      "filters":  { "type": "object", "description": "FiscalYear, ProfitCenter 등 조건" }
    }
  }
}

전체 흐름을 단계로 정리하면 다음과 같습니다.

  1. 쿼리 메타데이터 파싱 - Analytical Query에서 차원, 측정값, 변수를 추출
  2. 도구 정의 생성 - 집계 축과 지표, 필터를 MCP tool 스펙으로 매핑
  3. 집계 실행 래핑 - 인증, 권한, 집계 연산, 페이징을 도구 안에 감춤
  4. MCP 서버로 노출 - LLM이 도구로 인식하고 자연어 질문을 집계 요청으로 변환

결국 사용자는 “이번 달 사업부별 영업이익을 전월 대비로 보여줘”라고 말하고, 모델은 뒤에서 analyze_sales_by_profit_center를 호출해 SAP가 집계한 숫자로 답합니다. 원본 전표를 모델이 더하는 게 아니라, 집계는 SAP 엔진에 맡기는 것이 핵심입니다.

4. 직접 구현하면 부딪히는 벽

쿼리 하나를 MCP 도구로 만드는 것은 어렵지 않습니다. 문제는 분석 특유의 까다로움이 규모와 곱해진다는 점입니다.

  • 자연어와 SAP 코드의 간극 - 사용자는 “서울공장”, “홀딩스”라고 말하지만 SAP는 수익센터 코드로 저장합니다. 이 매핑을 쿼리마다 챙겨야 합니다.
  • 차원과 측정값 폭주 - 쿼리 하나가 수십 개의 차원과 지표를 갖는 경우가 흔해, 도구에 전부 노출하면 모델이 무엇을 골라야 할지 헷갈립니다.
  • 권한 기반 결과 제한 - 같은 매출 쿼리라도 사용자의 조직 권한에 따라 볼 수 있는 사업부가 달라야 합니다. 집계 결과에도 권한이 적용돼야 합니다.
  • 분석 근거 추적 - “이 숫자가 어느 쿼리에서 어떤 필터로 나왔는지”를 남기지 않으면 경영 보고에 쓸 수 없습니다.

쿼리가 수백 개로 늘어나면, 이 배관 작업 자체가 하나의 프로젝트가 됩니다. 그리고 이 작업은 비즈니스 가치를 전혀 만들지 않습니다.

5. QueryBridge로 자동화하기

QueryBridge는 3장의 원리를 그대로 자동화합니다. SAP 시스템에 연결하면 분석 쿼리를 스캔해 MCP 도구로 전환하고, 위에서 나열한 자연어 매핑, 권한, 집계 처리가 내장됩니다.

3단계 자동 파이프라인

  1. 자동 카탈로그화 - 모든 CDS Analytical Query를 스캔해 차원, 측정값, 변수를 수집하고 업무 도메인으로 분류 (S/4HANA의 표준 345개 이상 쿼리, 5,957개 차원 매핑)
  2. AI 도구 자동 변환 - 카탈로그의 쿼리를 MCP 도구로 변환 (모든 CDS를 변환, Claude와 GPT 호환, 집계 자동 처리)
  3. 자연어로 데이터 조회 - AI가 질문을 분석해 적합한 쿼리를 자동 선택하고 차원, 측정값, 필터를 구성해 실행. “서울공장” 같은 자연어를 SAP 코드로 자동 변환

특히 3단계의 키워드 매핑쿼리 자동 선택이 4장에서 짚은 벽을 걷어냅니다. 사용자는 SAP 용어를 몰라도 되고, 시스템이 질문에 맞는 분석 쿼리를 골라줍니다.

Claude에 연결하기

생성된 도구는 MCP Gateway로 하나의 엔드포인트에 묶여, 설정 한 줄로 수백 개의 분석 쿼리에 접근할 수 있습니다.

{
  "mcpServers": {
    "sap-analytics": {
      "url": "https://your-gateway.liteway.cc/mcp"
    }
  }
}

마무리

OData가 SAP를 “AI가 다루는 업무 시스템”으로 만든다면, Analytical Query는 SAP를 “AI에게 물어보는 분석 시스템”으로 만듭니다. 두 축은 상호 보완적입니다. 트랜잭션은 OData로, 집계와 분석은 CDS Analytical Query로 연결하는 것이 자연스럽습니다.

원리는 단순합니다 - 차원과 측정값을 도구 파라미터로 매핑하고, 집계는 SAP 엔진에 맡기는 것. 다만 그 반복을 수백 개 쿼리에 하고 싶지 않을 뿐입니다. 규모의 문제는 QueryBridge로 걷어내고, 그 위에서 만드는 분석 경험에 집중하세요.

QueryBridge

SAP 분석 쿼리를 자연어로 활용하세요

345개 이상의 표준 CDS Analytical Query를 MCP 도구로 전환합니다. 차원, 측정값, 집계까지 처리해, 현업 질문에 SAP 실데이터로 답하는 구조를 만듭니다.

QueryBridge 살펴보기