
Cursor 없이 사내 CSV를 자연어로 집계하기 (Compass)
요약
Windows용 AI 워크스페이스 Compass를 사용하여 로컬 CSV 데이터를 자연어로 집계하는 방법을 소개합니다. 코딩 없이도 질문을 통해 데이터를 분석하고, 결과를 Markdown, CSV 또는 HTML 차트로 시각화할 수 있습니다.
핵심 포인트
- Compass를 통해 자연어로 CSV 데이터에 질문하고 SQL 없이 집계 가능
- 분석 결과를 Markdown, CSV 및 HTML 차트로 저장 및 시각화 지원
- OpenAI, Gemini, DeepSeek 등 다양한 LLM API 연동 가능
- Windows 환경에서 Excel 피벗 테이블을 대체할 수 있는 쉬운 사용성
사내 매출 CSV를 열고, "이번 달 상위 상품은?", "점포별 합계는?"이라고 묻고 싶을 뿐인데, 매번 Excel의 피벗 테이블을 구성하거나, SQL을 작성하거나, Cursor를 열어 프롬프트를 고민해야 하는——그 모든 과정이 조금 번거롭다고 느끼는 분들을 위한 이야기입니다.
이 기사에서는 Windows용 AI 워크스페이스 Compass를 사용하여, 로컬 CSV를 자연어로 집계하는 절차를 정리합니다. 코드를 작성하는 이야기는 하지 않습니다.
- CSV가 들어 있는 폴더를 Compass로 열기
- 탐색기에서 CSV를 우클릭 → 데이터에 대해 묻기 (Ask about data) - "월별 매출을 집계해줘" 등과 같이 질문하기
- 필요하다면 결과를 Markdown/CSV로 저장하거나, HTML 차트로 만들어 탭 브라우저에서 열기
- 다음 주에는
.result.md로부터 쿼리 재실행
뒷단에서는 임시 SQLite로 데이터를 가져와 읽기 전용 SELECT 문을 실행합니다. 원본 CSV는 마음대로 수정하지 않습니다.
적합한 사람:
- Windows에서 사내 CSV / 익스포트(Export) 데이터를 다루는 일이 많은 사람
- Excel은 사용할 줄 알지만, 매번 피벗을 구성하고 싶지는 않은 사람
- Cursor나 VS Code는 "개발자용 같다"고 느끼는 사람
- 집계 결과를 폴더에 남겨두고, 다음 주에 같은 질문을 재실행하고 싶은 사람
- 표뿐만 아니라 회의용 막대그래프 / 꺾은선 그래프 HTML도 필요한 사람
적합하지 않은 사람:
- 이미 Cursor / Claude Code로 CSV를 쾌적하게 다루고 있는 사람
- Mac / Linux 사용자 (Compass는 현재 Windows만 지원)
- API 키를 전혀 사용하지 않고, 완전 오프라인 상태에서만 Agent 집계를 하고 싶은 사람 (후술)
| 항목 | 내용 |
|---|---|
| OS | Windows 10 / 11 (x64) |
| 앱 | Compass 설치 프로그램 (Compass Setup x.y.z.exe) |
| LLM | Agent (도구 호출/Tool calling) 대응 API. OpenAI / Gemini / DeepSeek / Groq / OpenRouter 등 |
| 데이터 | 사내 CSV (또는 아래 샘플) |
주의:
- Ollama만 사용할 경우 Ask / Edit는 사용할 수 있지만, Agent를 사용할 수 없기 때문에 이 기사의 핵심(자연어 → SQL 집계)은 작동하지 않습니다. Claude를 사용하고 싶다면 현재로서는 OpenRouter를 경유하는 것이 현실적입니다.
- 파일 1개당 가져오기 상한은 8MB입니다. 결과 표시는 최대 200행 정도에서 끊깁니다.
작업 폴더에 sales.csv를 만들어 주세요 (UTF-8 또는 Shift_JIS 모두 가능).
날짜,점포,상품,수량,매출
2026-06-01,시부야,노트북PC,2,240000
2026-06-01,시부야,마우스,10,30000
...
사내 실제 데이터도 동일한 절차로 진행합니다. 개인정보가 포함되어 있는 경우, 테스트하기 전에 마스킹(Masking)해 주세요.
- Releases에서 설치 프로그램을 다운로드
- Compass를 실행
- **설정 (Settings)**에서 프로바이더, API 키, 모델을 저장
→ 여기서는 Agent (tools)를 사용할 수 있는 모델을 선택해야 합니다.
- **사쿠라 AI Engine (さくらのAI Engine)**의 OpenAI 호환 API로도 사용할 수 있습니다.
무상 범위가 3,000 리퀘스트가 있어 충분히 사용할 수 있습니다.
- **파일 → 폴더 열기 (File → Open Folder)**를 통해
sales.csv가 있는 폴더를 선택합니다.
Agent는 워크스페이스(연 폴더)를 전제로 합니다. 단일 파일만 드래그해서 넣으면 이 기능은 사용하기 어렵습니다.
왼쪽 탐색기에서 sales.csv를 선택 → 우클릭 → 데이터에 대해 묻기 (Ask about data).
이렇게 하면 모드가 Agent로, 용도가 **데이터 (Data)**로 자동 설정됩니다. 채팅창에 예를 들어 다음과 같이 작성합니다.
점포별 매출 합계를 내줘. 많은 순서대로 정렬해줘.
또는:
상품별 수량과 매출을 집계해줘. 표로 보여줘.
6월 전반기 매출이 가장 큰 점포 Top 3는?
채팅에 표나 요약이 돌아온다면 성공입니다. 단계 표시(Step display)에 imported … 또는 cached …가 나타나면 CSV가 임시 SQLite에 올라간 상태입니다.
"채팅으로 확인만 한 상태"라면 다음 주에 다시 같은 질문을 입력해야 합니다. 결과를 남기고 싶을 때는 다음 중 하나를 선택하세요.
- 탐색기(Explorer)에서 CSV를 우클릭 → 결과를 Markdown/CSV로 저장 - 또는 채팅으로 "결과를 Markdown과 CSV로 소스 옆에 저장해줘"라고 요청
나온 차이점(diff)을 확인하고 적용 (Apply) 하면, 대략 다음과 같이 사이드카 파일들이 나열됩니다.
sales.csv
sales.result.md ← 요약·표·쿼리 정보
sales.result.csv ← 필요하다면 표 데이터
원본 sales.csv는 건드리지 않습니다. 쓰기 작업은 프리뷰 승인 후에만 이루어집니다.
표만으로는 회의나 보고 시 부족할 때가 있습니다. Compass에는 "그래프 버튼"은 없지만, 에이전트 (Agent)에게 HTML을 작성하게 하여 앱 내의 탭 브라우저로 여는 흐름을 사용할 수 있습니다.
집계 결과가 나온 후(또는 처음부터 한꺼번에), 채팅에 다음과 같이 요청합니다.
점포별 매출 합계를 막대그래프 형태의 HTML로 만들어줘.
Chart.js (CDN)를 사용하고, 데이터를 HTML 내에 포함시킨 단일 파일 sales.chart.html을 소스 옆에 생성해줘.
외부 서버는 띄우지 마.
꺾은선 그래프로 만들고 싶을 때:
날짜별 매출 합계를 꺾은선 그래프 형태의 HTML (sales.trend.html)로 만들어줘.
Chart.js의 CDN을 사용하고, 파일 하나로 열 수 있게 해줘.
원형 그래프 예시:
상품별 매출 구성비를 도넛 차트 형태의 HTML (sales.share.html)로 만들어줘.
범례와 금액 라벨을 붙여줘.
흐름은 다음과 같습니다.
- 에이전트 (Agent)가 집계(
profileData→queryData)를 수행한 후,sales.share.html등의 writeFile 제안을 함 - 차이점 프리뷰를 확인하고 적용 (Apply)
- 탐색기(Explorer)에서 해당
.html을 우클릭 → 탭 브라우저로 열기
sales.csv
sales.result.md
sales.share.html ← 여기를 탭 브라우저로 열기
포인트:
- 단일 HTML (CDN + 임베디드 데이터)로 만들면 사내 공유나 메일 첨부가 쉽습니다. 외관 확인은 OS의 브라우저를 사용해도 좋지만, Compass라면 작업 폴더를 벗어나지 않고 볼 수 있습니다.
- "이미지를 생성해줘"가 아니라 HTML 차트를 파일로 남기는 것이 이 용도에 맞는 방법입니다.
- 인터넷 제한이 강한 환경에서는 CDN (Chart.js 등)이 차단될 수 있습니다. 그럴 때는 "CDN 없이 순수 SVG 막대그래프 HTML로 만들어줘"라고 요청하세요.
효과적인 프롬프트 패턴은 대략 다음과 같습니다.
(무엇을)을 (막대/꺾은선/원) 그래프 형태의 단일 HTML로 만들어줘.
파일명은 ○○.html. Chart.js의 CDN 사용 가능. 데이터를 HTML에 포함할 것.
적용 후에 탭 브라우저로 열 수 있는 상태로 만들어줘.
CSV가 업데이트되면, sales.result.md를 우클릭(또는 에디터 탭에서 우클릭) → 쿼리 재실행 (Re-run query).
.result.md의 frontmatter에 이전 쿼리가 남아 있으므로, 동일한 SELECT 문을 다시 실행하여 결과 파일 업데이트를 제안해 줍니다. 이 부분이 "피벗(Pivot)을 매번 다시 구성하는 것"보다 훨씬 편한 포인트입니다.
차트 HTML은 .result.md의 재실행 대상이 아닙니다. CSV가 바뀌면 동일한 "HTML로 만들어줘" 프롬프트를 다시 던지거나, "sales.share.html을 최신 상품별 매출로 업데이트해줘"라고 요청하는 것이 확실합니다.
잘 먹히는 질문 방식:
- "점포별 매출 합계를 많은 순서대로"
- "상품=노트북 PC인 행만 추출해줘"
- "날짜별 매출 추이를 표로"
- "점포별 매출을 막대그래프 형태의 단일 HTML (Chart.js)로 만들어줘"
잘 안 먹히는 질문 방식:
- "적절하게 분석해줘" (무엇을 기준으로 할지 불분명함)
- "전부 그래프로 만들어줘" (종류·축·파일명이 없음)
- "이미지 그래프를 생성해줘" (PNG 생성이 아니라, HTML 차트를 파일화하는 것이 목적임)
- "이 CSV를 덮어쓰기로 수정해줘" (집계 용도가 아님. 정형화는 Edit + 데이터의 영역임)
여러 개의 CSV가 있을 때는 탐색기에서 여러 개를 선택한 후 **데이터에 대해 묻기 (Ask about data)**를 실행하면, 데이터 대조(JOIN에 해당)도 요청하기 쉽습니다.
용어 및 사내 규칙("매출 = 세금 제외", "점포 코드 읽는 법" 등)은 워크스페이스의 .compass/rules.md에 작성해 두면 편차를 줄일 수 있습니다.
Cursor는 코드용 AI IDE로서 강력합니다. 반면, 사내 CSV의 "질문하기 · 표로 보기 · 결과 파일 남기기 · 재실행"만이 목적이라면 다음과 같은 차이가 발생합니다.
| 구분 | Compass (이 용도) | Cursor |
|---|---|---|
| 진입 방식 | CSV 우클릭으로 데이터 용도로 직행 | 에디터/Composer에 직접 로드 |
| 결과 저장 방식 | 소스 옆의 .result.md / .result.csv + 재실행 | 채팅 로그 또는 직접 파일화 |
| 차트 | Agent가 HTML을 작성하고 브라우저 탭에서 열기 | 별도로 프리뷰를 보거나 브라우저로 옮겨야 하는 경우가 많음 |
| 대상 사용자 느낌 | 폴더 + 텍스트 / 데이터 작업 책상 | 개발자용 IDE |
| 쓰기 (Writing) | 차이점(Diff) 프리뷰 후 적용 | 강력하지만 용도가 코드 중심 |
"Cursor를 버려라"라는 뜻이 아닙니다. CSV 집계만을 위해 IDE를 열고 싶지 않은 사람들을 위한 지름길이라는 위치 설정입니다.
| 증상 | 확인 사항 |
|---|---|
| Agent가 나타나지 않음 / 데이터 집계 불가 | Ollama만 사용 중인지 확인. tools를 지원하는 클라우드 모델인지 확인 |
| ... |
- 사내 CSV의 "자연어 집계"는 Compass를 통해 폴더 열기 → 우클릭으로 질문 → 결과 저장 → 재실행 과정으로 수행할 수 있습니다.
- 회의용이라면 집계 → 단일 HTML 차트 → 브라우저 탭에서 열기까지 동일한 작업 환경에서 완결됩니다.
- 내부적으로는 임시 SQLite의 읽기 전용 쿼리(Read-only query)를 사용합니다. 원본 파일은 멋대로 손상시키지 않습니다.
- API(Agent 지원 모델)가 필요합니다. Ollama 단독으로는 이 용도로 사용할 수 없습니다.
테스트해 보시려면 아래를 확인하세요.
- 앱: Releases (Windows)
- 소스: niki-ikuo/compass
"이 프로바이더/모델을 사용했더니 이렇게 되었다", "이렇게 질문했더니 틀렸다" 등의 의견이 있다면 GitHub Issues에 남겨주시면 감사하겠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기