Power Apps는 Power Fx 쿼리가 데이터 원본에서 실행되는 동등한 쿼리로 완전히 변환될 때 백엔드 데이터 원본과 함께 사용할 때 가장 잘 작동합니다. Power Apps는 데이터 원본이 이해하는 쿼리를 보내고, 데이터 원본은 쿼리를 실행하고, Power Apps는 결과를 가져옵니다. 예를 들어 데이터 원본은 데이터를 필터링하고 필터 조건을 충족하는 행만 반환합니다. 이 프로세스가 발생하면 Power Apps에서 쿼리를 데이터 원본에 위임합니다 .
그러나 Power Fx 쿼리가 항상 모든 데이터 원본에 대한 동일한 쿼리로 변환될 수는 없습니다. 예를 들어 Dataverse는 Excel보다 더 많은 쿼리 기능을 지원합니다. Dataverse는 'in'(구성원 자격) 쿼리 연산자를 지원하지만 Excel은 지원하지 않습니다. 데이터 원본에서 지원하지 않는 기능을 사용하는 경우 쿼리를 지울 수 없습니다. 쿼리 식의 일부가 위임 불가능한 경우, Power Apps는 쿼리의 어떤 부분도 위임하지 않습니다.
쿼리를 위임할 수 없는 경우 Power Apps는 데이터 원본에서 처음 500개의 레코드를 가져온 다음 쿼리에서 작업을 실행합니다. 이 제한을 2,000개의 레코드로 늘릴 수 있습니다. 제한을 변경하면 Power Apps는 성능을 유지하기 위해 결과 크기를 500개의 레코드로 제한합니다. 더 큰 결과 집합은 앱과 Power Apps에 성능 문제를 일으킬 수 있습니다.
그러나 데이터 원본에 500개 또는 2,000개 이상의 레코드가 있는 경우 쿼리가 잘못된 결과를 반환할 수 있으므로 이 제한이 문제가 될 수 있습니다. 예를 들어 데이터 원본에 1,000만 개의 레코드가 있고 쿼리가 데이터의 마지막 부분(예: 'Z'로 시작하는 가족 이름)에서 작동해야 하며 쿼리에서 distinct와 같은 위임할 수 없는 연산자를 사용하는 경우 처음 500개 또는 2,000개의 레코드만 가져옵니다. 따라서 잘못된 결과를 얻을 수 있습니다.
데이터 원본에 대한 위임 가능한 테이블을 사용하여 Power Fx 쿼리를 만듭니다. 위임할 수 있는 쿼리 함수만 사용합니다. 앱의 성능을 유지하고 사용자가 필요한 모든 정보를 얻을 수 있도록 하는 유일한 방법입니다.
위임이 불가능한 경우를 보여주는 위임 경고에 주의하세요. 작은 데이터 집합(500개 미만의 레코드)으로 작업하는 경우 수식이 위임되지 않은 경우 앱이 데이터를 로컬로 처리하므로 데이터 원본 및 수식을 사용할 수 있습니다.
노트
위임 경고는 앱이 올바른 결과를 반환하도록 관리하는 데 도움이 됩니다. 데이터 원본의 데이터가 500개의 레코드를 초과하고 함수가 위임되지 않은 경우 Power Fx는 수식을 파란색 밑줄로 표시합니다.
위임 가능한 데이터 소스
위임은 특정 테이블 형식 데이터 원본에서만 작동합니다. 데이터 원본이 위임을 지원하면 해당 커넥터 설명서에서 해당 지원에 대한 설명을 확인할 수 있습니다. 이러한 인기 있는 테이블 형식 데이터 원본은 위임을 지원합니다.
- Power Apps 위임 가능한 함수 및 Microsoft Dataverse 작업
- Power Apps 위임 가능한 함수 및 SharePoint 작업
- Power Apps 위임 가능한 함수 및 SQL Server 작업
- Power Apps 위임 가능한 함수 및 Salesforce 작업
가져온 Excel 통합 문서( 앱 데이터 원본에 정적 데이터 추가 사용), 컬렉션 및 컨텍스트 변수에 저장된 테이블은 위임이 필요하지 않습니다. 이 데이터는 이미 메모리에 있으므로 전체 Power Apps 언어를 사용합니다.
Delegable 함수
위임할 수 있는 수식만 사용합니다. 이 문서에는 위임할 수 있는 수식 요소가 나열되어 있습니다. 모든 데이터 원본이 다르며 모든 데이터 원본이 이러한 요소를 모두 지원하는 것은 아닙니다. 수식에서 위임 경고를 확인합니다.
Filter 함수
필터, 검색, 첫 번째 및 조회를 위임할 수 있습니다.
Filter 및 LookUp 함수 내에서 테이블 열과 함께 다음 함수를 사용하여 적절한 레코드를 선택합니다.
- And(포함: &&), Or(포함: ||), Not(포함: !)
-
에서> [!참고]
In는 기본 데이터 원본의 열에 대해서만 위임됩니다. 예를 들어 데이터 원본이 계정 테이블이면
Filter(Accounts, Name in ["name1", "name2"])가 평가를 위해 데이터 원본에 위임합니다. 그러나Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])열이 계정과 다른 테이블(PrimaryContact)에 있으므로 는 위임하지 않습니다. 표현식은 로컬에서 평가됩니다. - =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- 컨트롤 속성, 전역 및 컨텍스트 변수와 같은 모든 레코드에서 동일한 상수 값입니다.
모든 레코드에 대한 상수 값으로 평가하는 수식의 일부를 사용할 수도 있습니다. 예를 들어 Left( Language(), 2 ), Date( 2019, 3, 31 ) 및 Today()는 레코드의 어떠한 열에도 종속되지 않으므로 모든 레코드에 동일한 값을 반환합니다. 이 값은 상수로 데이터 원본에 전송되며 위임을 차단하지 않습니다.
이전 목록에는 다음과 같은 주목할 만한 항목이 포함되지 않습니다.
- If
- *, /Mod
- 열 캐스팅 작업: 텍스트, 값
- Concatenate (& 포함)
- ExactIn
- 문자 조작 함수: Lower, Upper, Left, Mid, Len, ...
- 신호: Location, Acceleration, Compass, ...
- 일시적: Rand, ...
- 컬렉션
위임 및 컬렉션
이러한 함수를 사용하는 WithUpdateContextSet경우 내부적으로 컬렉션을 만듭니다. 컬렉션은 정적 메모리 내 레코드 목록이며 위임에 참여할 수 없습니다. 위임 경고가 표시되지 않습니다.
쿼리 제한 사항
수준 조회 및 확장
Power Apps에서는 최대 두 개의 조회 수준을 사용할 수 있습니다. Power Fx 쿼리 식에는 성능을 유지하기 위해 최대 두 개의 조회 함수가 포함될 수 있습니다. 쿼리 식에 조회가 포함된 경우 Power Apps는 먼저 기본 테이블을 쿼리한 다음 두 번째 쿼리를 실행하여 조회 정보로 첫 번째 테이블을 확장합니다. 이보다 추가로 한 단계가 최대값으로 지원됩니다. 오프라인 시나리오의 경우 한 수준의 조회 확장만 지원됩니다.
단일 쿼리에서 최대 20개 엔터티를 확장하거나 조인할 수 있습니다. 하나의 쿼리에서 20개 이상의 테이블을 조인해야 하는 경우 가능하면 데이터 서버에 뷰를 만들어 보십시오.
식 평가 - 엔터티의 속성은 동등 연산자의 왼쪽 'LHS'에 있어야 합니다.
비교할 엔터티의 속성을 방정식의 왼쪽(LHS)에 놓습니다. 예를 들어 다음 식에서 엔터티 속성 'Business unit ID'.Name은 LHS에 있으며 식은 다음과 같이 작동합니다.
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
그러나 이 식은 작동하지 않습니다.
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
정렬 함수
Sort 및 SortByColumns를 위임할 수 있습니다.
Sort에서 이 수식은 단일 열의 이름에 불과하며 다른 연산자 또는 함수를 포함하지 않습니다.
집계 함수
일부 집계 함수는 백 엔드 지원에 따라 위임할 수 있습니다. Sum, Average, Min 및 Max와 같은 함수를 위임할 수 있습니다. CountRows 및 Count와 같은 계산 함수도 위임할 수 있습니다. 그러나 RemoveIf 및 UpdateIf 에는 위임 제한이 있습니다. 제한된 수의 데이터 원본만 이러한 기능에 대한 위임을 지원합니다. 자세한 내용은 위임 목록을 참조하십시오.
위임 불가능 함수
다른 모든 함수는 위임할 수 없습니다. 주목할 만한 함수는 다음과 같습니다.
위임 불가능한 한도
위임할 수 없는 수식은 로컬에서 처리됩니다. 로컬 처리를 사용하면 전체 Power Apps 수식 언어를 사용할 수 있습니다. 그러나 대가가 있습니다: 모든 데이터가 우선 디바이스로 전달되어 네트워크를 통해 많은 양의 데이터를 가져오는 것을 의미할 수 있습니다. 이 프로세스는 시간이 걸리고 앱이 느리거나 응답하지 않는 것처럼 보일 수 있습니다.
이 문제를 방지하기 위해 Power Apps는 로컬에서 처리할 수 있는 데이터의 양을 기본적으로 500개의 레코드로 제한합니다. 이 제한을 사용하면 작은 데이터 집합을 완전히 사용하고 부분 결과를 확인하여 큰 데이터 집합으로 작업할 수 있습니다.
이 기능은 사용자에게 혼동을 줄 수 있으므로 주의해야 합니다. 예를 들어, 100만 개의 레코드가 있는 데이터 원본에 위임할 수 없는 선택 수식과 함께 Filter 함수를 사용하는 경우 처음 500개 레코드만 스캔됩니다. 원하는 레코드가 레코드 501 또는 500,001이면 필터 에서 레코드를 찾거나 반환하지 않습니다.
집계 함수도 혼란스러울 수 있습니다. 예를 들어, 동일한 백만 개 레코드 데이터 원본의 열에 Average를 사용하는 경우 식이 위임되지 않았기 때문에 Average는 위임될 수 없습니다(이전 참고 사항 참조). 처음 500개 레코드만 평균화됩니다. 주의하지 않으면 사용자가 부분적인 대답이 전체 답변이라고 생각할 수 있습니다.
제한 변경
기본 레코드 수는 500이지만 앱에 대해 이 번호를 변경할 수 있습니다.
- 설정을 선택합니다.
- 일반 아래에서 데이터 행 제한 설정을 1에서 2000까지 변경합니다.
경우에 따라 시나리오에 2,000개, 1,000개 또는 1,500개의 레코드가 충분합니다. 필요에 따라 이 숫자를 늘릴 수는 있지만, 늘리면 앱의 성능이 저하될 수 있습니다. 특히 많은 열이 있는 넓은 테이블의 경우 더욱 그렇습니다. 가능한 한 많이 위임하는 것이 가장 좋습니다.
앱이 큰 데이터 집합으로 확장되도록 하려면 이 값을 1로 설정합니다. 위임할 수 없는 항목이 있으면 앱을 테스트할 때 쉽게 감지할 수 있는 단일 레코드를 반환합니다. 이를 통해 개념 증명 앱을 프로덕션으로 옮길 때 예상치 못한 상황을 피할 수 있습니다.
위임 경고
Power Apps에서는 위임할 수 없는 수식을 만들 때 경고(노란색 삼각형)가 표시됩니다. 위임된 내용과 위임되지 않은 항목을 더 쉽게 알 수 있습니다.
위임 경고는 위임 가능한 데이터 원본을 사용하는 수식에만 표시됩니다. 경고가 표시되지 않지만 수식이 위임되지 않았다고 생각되면 이 문서의 앞부분에 나온 위임 가능한 데이터 원본 목록과 데이터 원본 유형을 비교해 보세요.
예
예를 들어 [dbo].[Fruit]라는 SQL Server 테이블을 기반으로 하는 세 개의 화면 앱을 자동으로 생성합니다. 앱을 생성하는 방법을 알아보려면 Dataverse에 대한 문서에서 설명한 것과 비슷한 원칙을 SQL Server에 적용합니다.
갤러리의 Items 속성은 SortByColumns 및 Search 함수가 포함된 수식을 사용하는데, 두 함수 모두 위임이 가능합니다.
검색창에 "Apple"을 입력합니다.
앱이 SQL Server와 통신하여 검색 요청을 처리하는 동안 화면 상단에 행진하는 점이 잠시 나타납니다. 데이터 원본에 수백만 개의 레코드가 있는 경우에도 검색 기준과 일치하는 모든 레코드가 표시됩니다.
Search 함수가 텍스트 열 어디에서나 표시되기 때문에 검색 결과에는 "Apples" 및 "Pineapple"이 포함됩니다. 과일 이름의 시작 부분에 검색어가 포함된 레코드만 찾으려면 더 구체적인 검색어를 사용하여 또 다른 위임 가능 함수인 Filter를 사용합니다. 편의상 SortByColumns 호출을 제거합니다.
새 결과에는 "Apples"가 포함되지만 "Pineapple"은 포함되지 않습니다. 왼쪽 탐색 모음에 썸네일이 표시되는 경우 갤러리 옆과 화면 썸네일에 노란색 삼각형이 나타납니다. 파란색 물결선이 수식의 일부 아래에 나타납니다. 이러한 각 요소는 경고를 나타냅니다. 갤러리 옆에 있는 노란색 삼각형을 마우스로 가리키면 다음과 같은 메시지가 나타납니다.
SQL Server는 위임 가능한 데이터 원본이고 Filter는 위임 가능한 함수입니다. 그러나 Mid 및 Len은 어떠한 데이터 원본에도 위임할 수 없습니다.
하지만 가능했습니다. 가능했다고 봐야죠. 이런 이유로 인해 빨간색 물결선이 아닌 오류가 됩니다.
- 테이블에 500개 미만의 레코드가 포함되는 경우 수식은 완벽하게 작동합니다. 모든 레코드를 디바이스로 가져오고 Filter가 로컬에 적용됩니다.
- 테이블에 500개를 초과하는 레코드가 포함되는 경우 수식은 조건에 일치하는 경우에도 레코드 501 이상을 반환하지 않습니다.