250x250
반응형
관리 메뉴

Allen's 데이터 맛집

⚡ Power FX 실전 스니펫 — Patch로 기존 데이터 수정 & 신규 추가 처리하기 본문

Programming/Power Apps(PowerFx)

⚡ Power FX 실전 스니펫 — Patch로 기존 데이터 수정 & 신규 추가 처리하기

Allen93 2025. 6. 10. 12:03
이번 포스트에선 Power Apps에서 자주 사용하는 Patch 함수로 기존 데이터를 업데이트하거나, 새로운 데이터를 추가하는 실전 패턴을 다룹니다.
데이터 소스에 저장된 항목이 있으면 수정, 없으면 신규로 추가하는 다양한 앱에 모두 적용할 수 있습니다.

🏷️ Patch 함수로 데이터 수정 & 추가

ForAll(
    colDailyTasks,
    Patch(
        Daily_DB,
        LookUp(Daily_DB, ID = ThisRecord.ID),
        {
            Task: ThisRecord.Task,
            WorkHour: ThisRecord.WorkHour
        }
    )
)

함수/모듈 설명

  • ForAll(컬렉션, 식)
    컬렉션의 각 레코드에 대해 반복적으로 지정한 식을 실행합니다.
    • 첫 번째 인자: 반복할 컬렉션
    • 두 번째 인자: 실행할 함수 또는 연산
  • Patch(데이터소스, 레코드, 변경할값)
    데이터 소스의 특정 레코드를 수정하거나, 없으면 새로 추가합니다.
    • 첫 번째 인자: 수정/추가할 데이터 소스 (예: Daily_DB)
    • 두 번째 인자: 어떤 레코드를 수정할지 지정 (없으면 새로 만듦)
    • 세 번째 인자: 실제로 수정할 컬럼과 값의 쌍(레코드 형식)
  • LookUp(테이블, 조건)
    조건에 맞는 첫 번째 레코드를 찾아 반환합니다.
    • 테이블에서 ID가 ThisRecord.ID인 행을 찾아 패치의 대상 레코드로 지정
  • ThisRecord
    ForAll 내부에서 현재 반복 중인 컬렉션의 한 행을 참조할 때 사용합니다.

실무 팁

  • 기존에 데이터가 없는 경우, LookUp() 결과가 빈 값일 수 있습니다.
    이럴 땐 Patch(Daily_DB, Defaults(Daily_DB), {...})로 신규 추가가 가능합니다.
  • 대량 데이터 처리에는 ForAll + Patch를 활용해 한 번에 여러 건을 처리할 수 있습니다.

자주 만나는 오류와 해결법

오류 메시지원인 및 해결법
The property expects a record value LookUp() 결과가 없을 때 Defaults(데이터소스)로 대체
Circular reference ThisRecord 참조가 꼬일 때 ForAll 내부 변수명 중복 확인
Name isn't valid 컬렉션/필드/테이블 이름 오타 확인
 

활용 예시

  • 업무 일지 저장, 연구비 항목 수정, 제안함 피드백 반영 등
  • 데이터가 이미 있으면 UPDATE, 없으면 INSERT 하는 복합 처리

마무리

Patch 함수 패턴을 익혀두면, 어떤 데이터 구조에서도 “수정/추가” 처리를 빠르게 구현할 수 있습니다.
실전에서 많이 쓰는 함수와 예시 위주로 앞으로도 계속 정리해 드리겠습니다.
궁금한 패턴, 자주 겪는 문제 등은 언제든 댓글로 남겨 주세요.


 

728x90