Power Automate에서 "Apply to each"를 과도하게 사용하고 있을 가능성
요약
Power Automate에서 'Apply to each' 루프를 과도하게 사용하는 대신 XPath를 활용하여 XML 데이터를 효율적으로 쿼리하는 방법을 제안합니다. 이를 통해 플로우의 실행 속도를 높이고 유지보수를 단순화할 수 있습니다.
핵심 포인트
- Apply to each 루프는 실행 시간 증가와 디버깅의 어려움을 초래할 수 있음
- XPath를 사용하면 루프와 조건문 없이 XML 데이터를 직접 쿼리 가능
- 불필요한 작업을 줄여 엔터프라이즈 자동화의 효율성 향상
- 데이터 형식(XML vs JSON)에 따라 적절한 함수와 도구를 선택하는 것이 중요
제가 Power Automate 솔루션을 구축하기 시작했을 때, 거의 모든 배열(array)에 대한 제 답변은 동일했습니다.
"Apply to each"를 사용하세요.
그것은 작동했습니다. 제 플로우(flow)는 성공적으로 실행되었고, 저는 다음 단계로 넘어갔습니다.
하지만 프로젝트 규모가 커지면서 한 가지 패턴을 발견했습니다.
- 플로우의 실행 시간이 길어짐.
- 작업(action) 수가 계속해서 증가함.
- 디버깅(debugging)이 고통스러워짐.
- 단순한 작업에 수십 개의 작업이 필요함.
그때부터 저는 플로우를 단순화할 방법을 찾기 시작했고, XPath는 XML을 다루기 위한 제가 가장 좋아하는 기술 중 하나가 되었습니다.
문제점
수백 명의 직원 기록이 담긴 XML 응답을 받는다고 가정해 봅시다.
만약 여러분에게 단 한 명의 직원의 이름만 필요하다면, 플로우가 정말로 모든 기록을 루프(loop)로 돌며 확인해야 할까요?
아마 아닐 것입니다.
더 나은 접근 방식
XPath를 사용하면 XML을 직접 쿼리(query)할 수 있습니다.
다음과 같이 말하는 대신:
"ID가 102인 것을 찾을 때까지 모든 직원을 확인하세요."
단순히 이렇게 요청하면 됩니다:
"ID가 102인 직원을 주세요."
식(expression)은 다음과 같습니다:
xpath(
xml(outputs('Compose')),
'/Employees/Employee\[Id="102"\]/Name/text()'
)
결과는 어떨까요?
David
그게 전부입니다.
루프도 없습니다.
조건(condition)도 없습니다.
그저 여러분에게 필요한 데이터만 있을 뿐입니다.
이것이 중요한 이유
XPath를 사용하면 다음과 같은 도움을 받을 수 있습니다:
- 불필요한 작업(action) 감소
- 실행 속도 향상
- 유지보수 단순화
- 더 깔끔한 엔터프라이즈 자동화(enterprise automation) 구축
작은 최적화이지만, 수십 개의 운영(production) 플로우에 적용되면 그 영향은 상당합니다.
XPath를 사용해야 할 때
XPath는 다음과 같은 작업을 할 때 이상적입니다:
- XML 파일
- SOAP API
- 레거시 시스템(legacy systems)의 XML 응답
- SharePoint XML 페이로드(payloads)
- 구조화된 XML 문서
데이터가 JSON이라면, Power Automate는 이미 filter(), select(), first()와 같은 훌륭한 함수들을 제공하고 있습니다.
작업에 맞는 적절한 도구를 선택하세요.
마치며
자동화 솔루션을 구축하며 배운 교훈 중 하나는 이것입니다:
가장 빠른 플로우는 항상 작업이 가장 많은 플로우가 아니라, 필요한 작업이 가장 적은 플로우입니다.
다음에 Apply to each를 추가할 때, 잠시 멈추어 스스로에게 질문해 보세요:
대신 XPath로 해결할 수 있지 않을까?
여러분의 플로우가 얼마나 더 단순해질 수 있는지 보고 놀라게 될 것입니다.
Power Automate, SharePoint, Microsoft 365, SPFx, Python, 그리고 AI 기반 자동화 (AI-powered automation)에 관한 실용적인 팁을 즐기신다면, 더 많은 기사를 위해 계속 소통해 주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기