1. 기존 프로세스의 문제점과 Cortex Analyst의 역할
-
문제점 (Slow & Inefficient)
- Business Users (비즈니스 사용자)
- 비즈니스 상황을 가장 잘 알지만, SQL 쿼리 작성은 그들의 업무 영역이 아닙니다.
- 필요한 데이터 분석을 위해 BI 대시보드를 사용하거나 데이터 팀에 임시(Ad Hoc) 질문을 해야 합니다.
- Data Teams (데이터 팀)
- BI 대시보드 구축 및 유지 관리에 시간을 소비합니다
- 비즈니스 사용자의 반복적이고 즉흥적인 질문(Ad Hoc Data Questions)에 응답하는 데 많은 시간을 소모합니다
- 비효율적인 데이터 접근 프로세스에 벗어나지 못합니다.

-
Cortex Analyst
- 셀프 서비스 데이터 분석
- Cortex Analyst는 이 두 사용자 그룹 사이의 격차를 해소합니다.

2. Snowflake Cortex Analyst의 동작 단계
Cortex Analyst는 사용자의 자연어 질문을 받아 정확한 SQL 쿼리로 변환한 뒤, 그 결과를 해석하여 답변을 제공하는 4단계 프로세스를 따릅니다.

- Request (요청)
- 클라이언트 앱은 사용자의 질문과 데이터 팀이 미리 정의한 YAML 시맨틱 모델을 Cortex Analyst REST API에 전달합니다.
- Question Understanding and Enrichment (질문 이해 및 보강)
- 분류(Classify)
- 답변 가능 여부를 판단합니다
- 답변할 수 없는 질문(모호하거나 데이터 범위 밖)일 경우, 관련 질문 제안을 사용자에게 반환할 수 있습니다.
- 콘텐츠 강화(Enrich)
- 질문을 시맨틱 정보(Semantic information)로 보강하여 LLM(대규모 언어 모델)이 더 정확한 SQL을 생성하도록 돕습니다.
- SQL Generation & Error Correction (SQL 생성 및 오류 수정)
- 병렬 실행: 여러 SQL 생성 에이전트가 병렬로 SQL 쿼리를 생성합니다.
- 에러 수정: 생성된 SQL에 오류가 있을 경우 오류 수정 에이전트가 이를 수정하고, 최종적으로 가장 정확하고 최적화된 SQL 쿼리를 합성(Synthesize)합니다.
- Display Response (응답 표시)
- 생성된 SQL 쿼리와 사용자의 질문에 대한 해석이 API 응답으로 반환됩니다.
- 앱은 이 SQL을 실행하여 얻은 결과와 해석을 최종 사용자에게 표시합니다.
3. 시맨틱 모델 (Semantic Model)의 중요성
시맨틱 모델은 Cortex Analyst의 핵심 정확도를 결정하는 가장 중요한 요소입니다.

- 시맨틱 모델의 역할
- Snowflake의 시맨틱 모델은 비즈니스 사용자가 사용하는 언어와 원시(Raw) 스키마 사이의 격차를 메워주는 경량의 데이터 모델링 메커니즘입니다.
- 정확도 향상
- 시맨틱 모델이 없으면 원시 스키마(테이블 및 칼럼 이름)만으로 질문에 답해야 하므로 부정확할 수 있습니다.
- 시맨틱 모델은 의미론적(Semantic) 정보를 스키마에 제공하여 Text-to-SQL 정확도를 92% 수준까지 크게 향상시킵니다.
- 구성 요소:
- SemanticModel: 논리적 테이블(Logical Tables)들의 모음입니다.
- LogicalTable: 데이터베이스 테이블 또는 뷰 위에 있는 논리적 계층으로, 차원(Dimensions), 시간 차원(TimeDimensions), 측정값(Measures), 필터(Filters) 등으로 구성됩니다.
- Dimension: 범주형 값(Categorical values)을 포함합니다 (예: '제품 이름').
- Measure: 수치 값(Numerical values)을 포함합니다 (예: '매출액').

4. 시맨틱 모델 자동 생성 및 시맨틱 뷰
- Snowflake가 수동 모델링 작업을 몇 분으로 단축합니다.
- AI가 기존 대시보드, 쿼리, 외부 시맨틱 레이어의 컨텍스트를 사용하여 모델을 추론하고 내용을 채워줍니다.
- 사용자는 생성된 모델을 검토하고 검증만 하면 됩니다.
- 시맨틱 뷰 (Semantic View)
- 이전에는 시맨틱 모델 정보를 YAML 파일 형태로 Stage에 저장했지만, 시맨틱 뷰는 모든 의미론적 모델 정보를 새로운 스키마 레벨의 객체로 데이터베이스에 직접 저장합니다.
- 이는 규칙 기반의 정확도를 통해 BI 지표를 일관성 있게 사용할 수 있도록 지원하며, 모든 SQL 인터페이스에서 접근 가능합니다.
5. Best Practice
- 핵심 원칙
- 비즈니스 사용자에게는 정확성과 신뢰성이 가장 중요합니다.
- 정확도가 낮은 일반적인 솔루션보다 정확한 작은 솔루션이 채택될 가능성이 높습니다.
- 비즈니스 도메인 구성: 시맨틱 모델을 비즈니스 도메인/주제 단위로 구성합니다 (예: Sales_Performance 도메인).
- 점진적 확장: 간단하고 작은 범위(도메인)에서 시작하여 반복적인 프로세스를 통해 점진적으로 확장합니다.
- 시맨틱 레이어 설정
- 컬럼 분류 및 필터
- Dimension, Time Dimension, Facts의 경우는 Semantic View 생성시 자동 생성
- 자동 생성된 분류는 리뷰 후 조정 가능
- Named Filters, Metrics : 특정 Table을 사용할때 질문에 맞춰 자동 적용

- 컬럼 레벨 상세 정의
- Data Type, Description, Sample Value 등 기본 설정은 Semantic View 생성시 자동 생성 기능 활용
- Expression : 특정 column을 사용할때 항상 사용되는 로직 적용

- 테이블 레벨
- Relationships을 통한 테이블 간의 관계 사전 정의 (1:1, 1:N / Inner, Left join)
- Verified Query을 통해서 사전에 정의된 질문이나 유사 질문에 대한 정확도 향상
