Genie Space 기본 개념과 생성 방법은 Genie Space 운영 가이드 를 참고하세요.
1단계: 데이터 준비 — 골드 테이블 설계
Genie가 정확한 SQL을 생성하려면, 잘 정제된 골드 테이블이 필요합니다.핵심 원칙
| 원칙 | 설명 |
|---|---|
| 작게 시작 | 테이블/뷰 5개 이하로 시작. 너무 많으면 Genie가 혼란 |
| 비정규화 | 자주 조인하는 테이블은 미리 조인해서 단일 뷰로 제공 |
| 사람이 읽을 수 있는 값 | 코드값(1, 2, 3) 대신 실제 이름(서울, 부산, 대전)으로 변환 |
| 코드 → 이름 매핑 | 스키마에 없는 비즈니스 용어는 CASE WHEN으로 뷰에 미리 정의 |
물리 테이블 → 시맨틱 뷰 전환
원본 물리 테이블을 주제별 시맨틱 뷰로 재구성하면 Genie 정확도가 크게 향상됩니다.Metric View 활용
동일한 메트릭을 여러 차원으로 분석해야 할 때, 뷰를 여러 개 만드는 대신 Metric View를 사용하세요.Dimension 정의
자주 필터로 사용되는 비즈니스 개념은 Dimension으로 미리 정의합니다.2단계: 벤치마크 설정
Genie Space 튜닝의 핵심은 **벤치마크(평가 기준)**입니다.벤치마크 구성 방법
벤치마크 질문 설계 팁
| 유형 | 예시 |
|---|---|
| 단순 조회 | ”이번 달 전체 매출 합계 알려줘” |
| 필터 + 집계 | ”서울 지역 VIP 고객 수 알려줘” |
| 기간 비교 | ”전분기 대비 이번 분기 매출 증가율” |
| 다중 조건 | ”신규 가입자 중 상위 등급으로 진입한 고객의 상품 보유 현황” |
| 비즈니스 용어 | ”우량 고객 세그먼트별 이탈률” (스키마에 없는 용어) |
핵심: 가장 중요한 벤치마크는 비즈니스 용어가 포함된 질문입니다. “우량 고객”의 정의가 스키마에 없으면 Genie가 틀릴 수밖에 없습니다.
3단계: 메타데이터와 인스트럭션 튜닝
테이블/컬럼 설명
중요: Genie Space 내에서 변경한 메타데이터는 Unity Catalog 원본에 영향을 주지 않습니다. 따라서 다른 사용자/다른 Space에 영향 없이 자유롭게 설명을 추가할 수 있습니다.
JOIN 힌트
미리 조인하기 어려운 경우, Genie Space의 Joins 탭에서 테이블 간 관계를 명시합니다.| 설정 항목 | 설명 |
|---|---|
| 관계 정의 | 어떤 컬럼으로 조인하는지 명시 |
| 조인 유형 | INNER / LEFT / RIGHT 지정 |
| 조인 조건 | 유효기간 조건 등 추가 조건 가능 |
예시 쿼리 등록
Genie가 어려워하는 쿼리 유형을 **예시 쿼리(Sample Query)**로 등록합니다.SQL Expression (재사용 가능한 빌딩 블록)
공통 비즈니스 로직을 SQL Expression으로 등록하면, Genie가 쿼리 구성 시 자동으로 활용합니다.| Expression 이름 | SQL | 용도 |
|---|---|---|
| 회계연도 | CASE WHEN MONTH(date) >= 4 THEN YEAR(date) ELSE YEAR(date)-1 END | 4월 시작 회계연도 |
| 고객등급 | CASE WHEN grade IN ('1','2','3') THEN 'VIP' ... | 등급 코드 → 이름 |
| 연령대 | CASE WHEN age < 20 THEN '10대' WHEN age < 30 THEN '20대' ... | 나이 → 연령대 |
UDF (사용자 정의 함수) 등록
복잡한 계산은 Unity Catalog Function으로 등록하고, Genie가 도구로 사용하게 합니다.4단계: General Instruction 작성
벤치마크에서 반복적으로 실패하는 패턴을 General Instruction으로 해결합니다.좋은 인스트럭션 vs 나쁜 인스트럭션
| 구분 | 예시 |
|---|---|
| 좋은 예 | ”매출을 계산할 때는 반드시 금액 > 0 조건을 포함하세요. 취소 건(금액 ≤ 0)은 제외합니다.” |
| 좋은 예 | “‘우량 고객’이란 등급이 VIP 또는 우수인 당월 활성 고객을 의미합니다.” |
| 좋은 예 | ”날짜 조건에서 ‘올해’는 현재 회계연도(4월~3월)를 의미합니다.” |
| 나쁜 예 | ”정확한 SQL을 생성해주세요” (너무 모호함) |
| 나쁜 예 | ”금융 도메인 전문가처럼 행동하세요” (행동 지침이 아닌 역할 부여) |
인스트럭션 작성 원칙
- 구체적 행동을 지시 — “~할 때는 ~하세요”
- 비즈니스 용어를 정의 — 스키마에 없는 용어의 SQL 표현 명시
- 예외 처리 명시 — “~의 경우 ~을 제외하세요”
- 출력 형식 지정 — “금액은 원 단위로, 비율은 소수점 1자리까지”
지침 유형 선택 우선순위
Genie에게 지식을 전달하는 방법에는 우선순위가 있습니다. SQL 기반 지침이 텍스트 지침보다 항상 정확합니다.| 우선순위 | 유형 | 사용 시점 |
|---|---|---|
| 1순위 | SQL Expression | 비즈니스 용어를 SQL 스니펫으로 정의 (회계연도, 고객 등급 등) |
| 2순위 | 예시 쿼리 (Sample Query) | 복잡한 쿼리 패턴을 전체 SQL로 시연 |
| 3순위 | 텍스트 인스트럭션 | SQL로 표현할 수 없는 행동 규칙 (최후의 수단) |
공식 문서 권장: “SQL Expression과 예시 쿼리가 해결할 수 없는 경우에만 텍스트 인스트럭션을 사용하세요.”
명확화 질문 프롬프팅 (Clarification Prompting)
사용자의 질문이 모호할 때 Genie가 되물어보도록 인스트럭션을 설정할 수 있습니다. 명확화 질문 인스트럭션에는 4가지 요소를 포함합니다:| 요소 | 설명 | 예시 |
|---|---|---|
| 트리거 조건 | 언제 물어볼지 | ”사용자가 ‘매출’만 말하고 기간을 지정하지 않으면” |
| 누락 정보 | 어떤 정보가 필요한지 | ”기간(월/분기/연도)과 기준(주문일/결제일)“ |
| 필수 행동 | 반드시 질문해야 함 | ”SQL을 실행하기 전에 반드시 기간을 확인하세요” |
| 예시 질문 | 구체적 질문 문구 | ”어떤 기간의 매출을 보고 싶으신가요? (예: 이번 분기, 최근 6개월)“ |
응답 요약 커스터마이징
텍스트 인스트럭션 끝에 “응답 요약 시 따라야 할 규칙” 섹션을 추가하면 답변 형식을 제어할 수 있습니다.5단계: 모니터링과 지속 개선
전문가 피드백 수집
일반적인 문제와 해결 방법
| 문제 | 원인 | 해결 |
|---|---|---|
| 비즈니스 용어를 이해 못 함 | 스키마에 용어 정의 없음 | 컬럼 설명 + 인스트럭션에 용어 정의 추가 |
| 잘못된 테이블을 선택 | 테이블 설명 부족 | 테이블 설명에 “언제 이 테이블을 사용해야 하는지” 명시 |
| JOIN이 틀림 | 테이블 관계 미지정 | Joins 탭에서 관계 명시 |
| 기간 계산 오류 | 회계연도/분기 기준 모호 | SQL Expression으로 기간 계산 로직 등록 |
| 복잡한 쿼리 실패 | 단계별 로직이 필요 | 예시 쿼리로 패턴 등록 |
관련 문서
- Genie Space 생성 — Space 초기 설정
- 데이터 설정 — 테이블 선택, 컬럼 최적화
- 인스트럭션 — 비즈니스 규칙 정의
- 테스트 — 품질 검증, 반복 개선
- Metric Views — Metric View 개념과 활용