
Power Query 고급 자동화: 폴더 드롭·파라미터·오류 로깅·Folding 최적화
폴더에 파일만 추가해도 자동 집계되는 Power Query 고급 설계를 소개합니다. 스테이징 쿼리, 파라미터, 커스텀 함수, 오류 로깅, Query Folding 최적화까지 실무 템플릿과 M 코드를 제공합니다.
Quick Fix: 10분 자동 집계
- 폴더 준비 후 데이터 > 폴더에서를 사용해 결합
- 샘플 파일 변환에서 Trim/형식/분할 적용
- Group By로 집계 후 닫기 및 로드
설계도
- 스테이징 → 파라미터 → 커스텀 함수 → 오류 로깅
- Query Folding 유지: 필터/형식 앞단, 파생 후단
실무 예제
파라미터
- pFolder: D:\Data\sales\2025-09
- pMinDate: 2025-09-01
- pRevenueFloor: 0
fnCleanCsv (커스텀 함수)
(folder as text, name as text) as table =>
let
src = Csv.Document(File.Contents(folder & "\" & name), [Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.Csv]),
head = Table.PromoteHeaders(src, [PromoteAllScalars=true]),
keep = Table.SelectColumns(head, {"order_date","category","item","qty","revenue"}),
types = Table.TransformColumnTypes(keep,{{"order_date", type date},{"category", type text},{"item", type text},{"qty", Int64.Type},{"revenue", Int64.Type}}),
trimmed = Table.TransformColumns(types,{{"category", Text.Trim, type text},{"item", Text.Trim, type text}})
in
trimmed
주문 통합 + 오류 로깅
let
folder = pFolder,
files = stg_Files,
Applied = Table.AddColumn(files, "TryTable", each try fnCleanCsv(folder, [Name])),
Success = Table.SelectRows(Applied, each [TryTable][HasError] = false),
Failure = Table.SelectRows(Applied, each [TryTable][HasError] = true),
Expanded = Table.ExpandTableColumn(Success, "TryTable", {"Value"}, {"Data"}),
Combined = Table.Combine(Expanded[Data]),
Filtered = Table.SelectRows(Combined, each [order_date] >= pMinDate and [revenue] >= pRevenueFloor),
Final = Table.TransformColumnTypes(Filtered, {{"order_date", type date},{"qty", Int64.Type},{"revenue", Int64.Type}})
in
Final
오류 로그
let
folder = pFolder,
files = stg_Files,
Applied = Table.AddColumn(files, "TryTable", each try fnCleanCsv(folder, [Name])),
Failure = Table.SelectRows(Applied, each [TryTable][HasError] = true),
Log = Table.TransformColumns(Table.AddColumn(Failure, "ErrorMessage", each [TryTable][Error][Message]), {{"ErrorMessage", Text.From, type text}}),
KeepCols = Table.SelectColumns(Log, {"Name","ErrorMessage"})
in
KeepCols
성능 팁
- 필터/형식 지정은 앞단(폴딩 유지)
- 필요 열만 유지, 단계 최소화
- Buffer는 최후 수단
Troubleshooting
| 증상 | 원인 | 해결 |
|---|---|---|
| 새 파일 미반영 | 경로/패턴 불일치 | pFolder/StartsWith 규칙 확인 |
| 날짜 텍스트 인식 | 로케일 | type date 또는 Date.FromText |
| 합계 0 | 텍스트 숫자 | Int64.Type로 형식 지정 |
| 느린 새로고침 | 폴딩 끊김 | 필터 앞당김/단계 정리/Buffer 최소화 |
| 오류행 섞임 | 예외 미처리 | try … otherwise로 q_Errors 분리 |
맺음말
폴더 드롭·파라미터·오류 로깅·Folding 최적화로 Power Query 고급 자동화를 완성했습니다. 다음 글은 Power Query 출력과 동적 배열/차트를 연결하는 파이프라인으로 이어집니다.