실습 ②: 흐름 + Excel 커넥터 — Office Script 없이, 필터의 힘으로
| 시간 | 소요 | 수강생 역할 |
|---|---|---|
| 10:36 | 12분 | 🟡 따라보기 |
실습 ① 은 흐름도 코드도 쓰지 않는 가장 가벼운 길이었습니다. 그런데 결과를 자동화로 보내거나 큰 데이터를 다듬어야 할 때는 흐름이 필요합니다. 흐름이라고 해서 반드시 Office Script까지 가야 하는 것은 아닙니다. 이 실습은 Excel 커넥터의 표준 작업 — 테이블 행 가져오기 — 와 OData 필터/정렬/상위 N 만으로도 강력한 분석 파이프라인이 만들어진다는 사실을 직접 확인합니다.
목차
- 1. 왜 이 길이 따로 있나 — 세 길 비교
- 2. 이 실습이 만드는 것 — 3단 콤보
- Part A. 흐름 만들기 (Step 1~10)
- Part B. 토픽에 흐름 연결 (Step 11~14)
- 3. 필터의 힘 — 작은 실험 (2분)
- 4. 한계와 다음 단계
1. 왜 이 길이 따로 있나 — 세 길 비교
| 길 | 흐름 | Office Script | OData 필터 | 적합한 순간 |
|---|---|---|---|---|
| 실습 ① | ❌ | ❌ | ❌ | 일회성 자연어 질의 / 토픽 후속 대화 |
| 실습 ② (이 페이지) | ✅ | ❌ | ✅ 핵심 | 후속 자동화는 필요하지만 코드까지는 과한 경우 |
| 실습 ③ | ✅ | ✅ | (선택) | 수천~수만 행 / 컬럼 변환·피벗 등 결정적 처리 |
이 실습의 진가는 “코드를 안 쓰고도 데이터를 슬라이싱할 수 있다” 입니다. OData 필터는 SharePoint·Dataverse 등 다른 커넥터에도 동일 문법 으로 재사용되는 자산이라 학습 가치도 큽니다.
2. 이 실습이 만드는 것 — 3단 콤보
실습 ①과 동일하게 사용자가 첨부한 Excel 파일 을 받아 흐름으로 넘기고, 흐름에서는 다음 3단으로 처리합니다.
[사용자] → 토픽
├ 질문 노드 ① — 요청문
├ 질문 노드 ② — 파일
↓ 흐름 호출 (요청문 + 파일 record)
[Power Automate 흐름]
├ ① OneDrive 임시 저장
├ ② 테이블 가져오기 → 첫 테이블 이름 추출
├ ③ 테이블 행 가져오기 (필터 쿼리 ⭐)
├ ④ JSON 직렬화
├ ⑤ AI 프롬프트 (스키마 명시)
↓
[토픽 메시지 노드] → [사용자]
Office Script가 없는 대신, OData 필터 가 데이터 슬라이싱을 담당합니다. 코드 없이도 토큰을 절약하고 컨텍스트를 좁힐 수 있습니다.
Part A. 흐름 만들기 (Step 1~10)
Step 1. 흐름 생성
- make.powerautomate.com 접속
- 만들기 → 인스턴트 클라우드 흐름
- 트리거: Copilot Studio (V2) → “Copilot에서 흐름을 호출할 때”
- 흐름 이름:
엑셀분석_커넥터_흐름 - 트리거 입력:
요청문(텍스트)파일(파일)
Step 2. OneDrive에 임시 저장
- 새 작업: OneDrive for Business → 파일 만들기
- 폴더 경로:
/Apps/엑셀분석_임시/ - 파일 이름:
temp_@{utcNow('yyyyMMddHHmmss')}.xlsx - 파일 콘텐츠: 트리거 입력의 파일 콘텐츠
포인트: 작업 이름을
파일만들기로 정리해두면 다음 단계 동적 콘텐츠를 찾기 쉽습니다.
Step 3. 테이블 가져오기 (Get tables) ⭐
사용자가 첨부한 엑셀의 테이블 이름을 모르더라도 자동으로 알아내기 위한 단계입니다.
- 새 작업: Excel Online (Business) → 테이블 가져오기 (Get tables)
- 매개변수:
- 위치:
OneDrive for Business - 문서 라이브러리:
OneDrive - 파일: Step 2에서 만든 파일의 ID (동적 콘텐츠)
- 위치:
포인트: 이 작업이 워크북에 정의된 모든 Excel Table 의 목록(이름·범위 등)을 돌려줍니다. 학습자마다 첨부 파일이 다를 수 있고 테이블 이름도 다를 수 있어 — 첫 번째 테이블을 자동으로 골라 쓰는 패턴 이 가장 견고합니다.
Step 4. 작성 (Compose) — 첫 테이블 이름 추출
- 새 작업: 데이터 작업 → 작성 (Compose)
- 이름 변경:
첫_테이블_이름 -
입력 수식:
first(outputs('테이블_가져오기')?['body/value'])?['name']액션 이름이
테이블 가져오기가 아니라 다른 이름이면 그에 맞춰 수정하세요. UI에서 “동적 콘텐츠 → 테이블 가져오기 → 이름” 을 클릭해도 동일한 결과가 됩니다.
Step 5. 테이블 행 가져오기 (List rows in table) ⭐⭐
이 실습의 핵심 작업 입니다. 필터·정렬·상위 N을 여기서 다룹니다.
- 새 작업: Excel Online (Business) → 테이블에 있는 행 나열 (List rows present in a table)
- 매개변수:
- 위치:
OneDrive for Business - 문서 라이브러리:
OneDrive - 파일: Step 2의 파일 ID
- 테이블: Step 4 출력 (
첫_테이블_이름)
- 위치:
- 고급 옵션 펼치기 → 다음 세 가지를 설정해봅니다:
| 옵션 | 처음 입력값 | 설명 |
|---|---|---|
| 필터 쿼리 | 연도 ge 2024 |
2024·2025년만 통과 |
| 순서 기준 (Order By) | 연도 asc, 분기 asc |
정렬 |
| 상위 개수 (Top Count) | 100 |
안전 상한 |
포인트 — OData 필터 문법:
- 비교:
eqnegtgeltle- 조합:
andornot- 문자열은 작은따옴표:
과일 eq '사과'- 예시:
과일 eq '사과'— 사과만연도 ge 2024 and 과일 ne '감'— 2024 이후 사과·배만판매량 gt 1500— 판매량 1,500 초과한글 컬럼명·한글 값도 그대로 동작합니다. SharePoint 목록·Dataverse 테이블에서도 같은 문법 으로 필터링되니, 이 한 번의 학습이 폭넓게 재활용됩니다.
⚠️ 커넥터 한계: 기본 256행 / 최대 5,000행. 그 이상은 페이지네이션을 켜거나 실습 ③(Office Script)로 가야 합니다.
Step 6. 작성 (Compose) — JSON 직렬화
- 새 작업: 데이터 작업 → 작성 (Compose)
- 이름 변경:
데이터JSON -
입력 수식:
string(outputs('테이블에_있는_행_나열')?['body/value'])UI 동적 콘텐츠의 “값 (테이블에 있는 행 나열)” 을
string()으로 감싸도 동일합니다.
포인트:
value는 record 배열이라 그대로 AI 프롬프트에 넣을 수 없습니다.string()으로 한 번 직렬화해 텍스트로 만들어야 다음 단계 입력에 매핑됩니다.
Step 7. AI 프롬프트 노드 추가
- 새 작업: AI Builder → 프롬프트로 텍스트 만들기 (Create text with GPT using a prompt)
- 새 프롬프트 만들기 클릭
Step 8. 사용자 지정 프롬프트 작성
프롬프트 이름: 엑셀_분석_프롬프트_커넥터
프롬프트 본문:
당신은 Excel 데이터 분석가입니다. 아래 [데이터]는 Excel 테이블의 행 중
필터링된 결과를 JSON 배열로 변환한 것입니다. [요청문]에 따라 데이터를 분석하고,
한국어로 친절하게 답변하세요.
[데이터 스키마]
- 연도 (number): 2006 ~ 2025
- 분기 (string): "Q1" | "Q2" | "Q3" | "Q4"
- 과일 (string): "사과" | "배" | "감"
- 판매량 (number): 정수
[참고] 이 데이터는 흐름 단계에서 OData 필터로 이미 한 번 걸러진 결과입니다.
[데이터]에 없는 행은 "필터에 의해 제외되었거나 데이터가 없습니다" 라고 답하세요.
[규칙]
- 숫자는 천 단위 콤마로 표기합니다.
- 평균/합계 등 계산이 필요하면 정확히 계산합니다.
- 데이터에 없는 값은 추측하지 말고 "데이터에 없습니다"라고 답하세요.
- 답변은 결론 한 줄 + 근거 표(또는 목록)로 구성하세요.
[요청문]
[데이터]
입력 변수: 요청문 (텍스트), 데이터JSON (텍스트)
모델: GPT-5 (또는 사용 가능한 최신 모델). 코드 인터프리터는 꺼두기를 권장 — 이 실습은 데이터를 미리 좁혀 LLM이 직접 푸는 길을 선호합니다.
테스트 후 저장.
Step 9. 흐름으로 돌아와 AI 프롬프트 입력 매핑
- AI 프롬프트 노드에 두 입력이 보임
요청문→ 트리거요청문동적 콘텐츠데이터JSON→ Step 6데이터JSON(Compose) 출력
Step 10. 응답 노드 + 전체 테스트
- 마지막 작업: Copilot Studio에 응답 (Respond to Copilot)
- 출력 추가:
결과텍스트(텍스트) = AI 프롬프트의 응답 텍스트 - 저장 → 테스트 → 수동으로
- 요청문:
2024년 이후 사과·배 판매량을 비교해줘 - 파일: 과일판매_Table.xlsx
- 요청문:
- 결과 텍스트가 자연어 분석으로 나오는지 확인
체크포인트: 테이블 가져오기·행 가져오기 결과를 흐름 실행 이력에서 펼쳐 보세요. 필터가 실제로 행 수를 줄였는지 한눈에 확인할 수 있습니다.
Part B. 토픽에 흐름 연결 (Step 11~14)
실습 ①의 토픽과 충돌 없이 별개 토픽 으로 만듭니다. 같은 에이전트 안에서 세 실습의 결과를 비교할 수 있게 둡니다.
Step 11. 새 토픽 만들기
- Copilot Studio → 실습 ①의 에이전트 열기 → 토픽 → 새 토픽 (빈 토픽)
- 토픽 이름:
엑셀 분석 (커넥터) - 트리거 구문:
엑셀 분석 커넥터커넥터로 엑셀 분석
Step 12. 질문 노드 2개
- 질문 ① (요청문)
- 메시지: “어떤 분석을 원하시나요? (예: 2024년 이후 사과·배 판매량 비교)”
- 식별: 사용자의 전체 응답 (텍스트)
- 변수:
Topic.요청문
- 질문 ② (파일)
- 메시지: “분석할 Excel 파일을 첨부해주세요.”
- 식별: 파일 (File)
- 변수:
Topic.첨부파일 - 속성 → 고급 → 파일 메타데이터 활성화 ← 체크
Step 13. 흐름 호출 노드
- 새 노드 추가 → 작업(Action) → 흐름 →
엑셀분석_커넥터_흐름 - 입력 매핑:
요청문→Topic.요청문-
파일→ 수식(fx):{ name: Topic.첨부파일.Name, contentBytes: Topic.첨부파일.Content }
포인트: 테넌트 버전에 따라 속성 이름이
Name/Content또는name/contentBytes등으로 다를 수 있습니다. 흐름 트리거의 입력 스키마와 일치하도록 확인하세요.
Step 14. 결과 메시지 + 게시 + 테스트
- 흐름 호출 노드 다음 → 메시지 노드 추가, 흐름 출력
결과텍스트삽입 - 토픽 저장 + 게시
- 우측 테스트 → 새 대화 시작
- 입력:
엑셀 분석 커넥터 - 요청문:
2024년 이후 사과·배 판매량을 비교해줘 - 파일:
과일판매_Table.xlsx
- 입력:
- 약 5~10초 대기 후 분석 결과 확인
3. 필터의 힘 — 작은 실험 (2분)
흐름 디자이너로 돌아가 Step 5의 필터 쿼리만 바꿔가며 같은 요청문으로 테스트해 보세요. 코드 한 줄 없이 결과 컨텍스트가 어떻게 달라지는지 체감하는 게 이 실습의 진짜 학습 포인트입니다.
| 필터 쿼리 | 행 수 | 결과 답변의 변화 |
|---|---|---|
| (비움) | 192 | 모든 행 — 분석 범위 넓음 |
연도 ge 2024 |
~24 | 최근 2년만 — 최신 트렌드 강조 |
과일 eq '사과' and 연도 ge 2020 |
~24 | 사과 + 코로나 이후만 |
판매량 gt 1500 |
(가변) | 베스트셀러 분기만 |
💡 깨달음: “데이터를 LLM에 모두 던지면 똑똑하게 알아서 한다” 는 환상보다, “필요한 만큼만 좁혀서 던지면 더 정확하고 더 빠르고 더 싸다” 가 실제 운영의 진실에 가깝습니다.
4. 한계와 다음 단계
| 한계 | 어디로 가야 하나 |
|---|---|
| 행이 5,000행 초과 (커넥터 상한) | 실습 ③ — Office Script 사전 집계 |
| 컬럼 변환·피벗·복잡한 그룹화가 필요 | 실습 ③ — Office Script로 결정적 처리 |
| 사용자가 매번 다른 필터를 자유롭게 지정해야 | 토픽 질문 노드 추가 + 흐름 입력 필터쿼리 매개변수 |
| 첨부 엑셀에 Table이 없음 | 사용자에게 Ctrl+T 안내 (실습 ①과 동일 원칙) |
💡 현장 팁: 실무 90% 시나리오는 “특정 조건으로 필터된 데이터에 대해 자연어 질의” 입니다. 이 패턴 하나만으로 다수의 업무 자동화가 커버됩니다. Office Script는 정말 필요한 시나리오에만 — 그 길은 실습 ③ 에서.