Notă
Accesul la această pagină necesită autorizare. Puteți încerca să vă conectați sau să modificați directoarele.
Accesul la această pagină necesită autorizare. Puteți încerca să modificați directoarele.
Înțelegerea delegării
Power Apps funcționează cel mai bine cu o sursă de date back-end atunci când o interogare se traduce complet într-o interogare echivalentă care rulează pe sursa de date. Power Fx Power Apps trimite o interogare pe care sursa de date o înțelege, sursa de date rulează interogarea și Power Apps obține rezultatele. De exemplu, sursa de date filtrează datele și returnează doar rândurile care îndeplinesc criteriile de filtrare. Când funcționează, interogarea este delegată sursei de date.
Însă interogările nu se pot traduce întotdeauna în interogări echivalente pe fiecare sursă de date. Power Fx De exemplu, Dataverse acceptă mai multe funcții de interogare decât Excel. Dataverse acceptă operatorul de interogare „in” (apartenență), dar Excel nu. O interogare este *nedelegabilă* dacă folosește o funcționalitate pe care sursa de date nu o acceptă. Dacă o parte a unei expresii de interogare nu este delegabilă, Power Apps nu delegă nicio parte a interogării.
Când o interogare nu poate fi delegată, Power Apps preia primele 500 de înregistrări din sursa de date și apoi execută acțiunile din interogare. Puteți mări această limită la 2.000 de înregistrări. Modificarea limiteiPower Apps limitează dimensiunea rezultatului la 500 de înregistrări pentru a menține performanța aplicației. Seturile de rezultate mai mari pot cauza probleme de performanță pentru aplicație și Power Apps.
Însă această limitare poate fi o problemă, deoarece interogarea ar putea returna rezultate incorecte dacă sursa de date are mai mult de 500 sau 2.000 de înregistrări. De exemplu, dacă sursa de date are 10 milioane de înregistrări și interogarea trebuie să lucreze la ultima parte a datelor, cum ar fi numele de familie care încep cu „Z”, iar interogarea utilizează un operator nedelegabil, cum ar fi distinct, veți obține doar primele 500 sau 2.000 de înregistrări. Asta înseamnă că obții rezultate greșite.
Creați-vă interogările utilizând tabelele delegabile pentru sursa de date. Power Fx Folosiți doar funcții de interogare care pot fi delegate. Este singura modalitate de a menține performanța aplicației tale și de a te asigura că utilizatorii pot obține toate informațiile de care au nevoie.
Acordați atenție avertismentelor privind delegarea care arată unde delegarea nu este posibilă. Dacă lucrați cu seturi de date mici (mai puțin de 500 de înregistrări), puteți utiliza orice sursă de date și formulă, deoarece aplicația procesează datele local dacă formula nu poate fi delegată.
Notă
Avertismentele privind delegarea vă ajută să gestionați aplicația astfel încât să returneze rezultate corecte. Dacă datele din sursa de date depășesc 500 de înregistrări și o funcție nu poate fi delegată, Power Fx marchează formula cu o subliniere albastră.
Surse de date prin delegare
Delegarea funcționează doar cu anumite surse de date tabelare. Dacă o sursă de date acceptă delegarea, documentația conectorului său explică acest suport. ... De exemplu, aceste surse populare de date tabelare acceptă delegarea:
- Power Apps funcții și operațiuni delegabile pentru Microsoft Dataverse
- Power Apps funcții și operațiuni delegabile pentru SharePoint
- Power Apps funcții și operații delegabile pentru SQL Server
- Power Apps funcții și operațiuni delegabile pentru Salesforce
Registrele de lucru Excel importate (folosind sursa de date Adăugați date statice la aplicația dvs. ), colecțiile și tabelele stocate în variabile de context nu necesită delegare. Toate aceste date sunt deja în memorie, așa că puteți utiliza limbajul complet. Power Apps
Funcții ce pot fi delegate
Folosește doar formule care pot fi delegate. Acest articol listează elementele formulei care pot fi delegate. Fiecare sursă de date este diferită și nu toate acceptă toate aceste elemente. Verificați dacă există avertismente privind delegarea în formula dvs.
Funcții de filtrare
Filtrul, Căutare, Primul și Căutare pot fi delegate.
În cadrul funcțiilor Filter și LookUp , utilizați-le cu coloanele tabelului pentru a selecta înregistrările corespunzătoare:
- Și (inclusiv &&), Sau (inclusiv ||), Nu este (inclusiv !)
-
În> [!NOTĂ]
In este delegat doar pentru coloanele din sursa de date de bază. De exemplu, dacă sursa de date este tabelul Conturi ,
Filter(Accounts, Name in ["name1", "name2"])
deleagă către sursa de date pentru evaluare. DarFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
nu este delegată deoarece coloana Nume complet se află într-un tabel diferit (PrimaryContact) față de Conturi. Expresia este evaluată local. - =, <>, >=, <=, >, <
- +, -
- TrimEnds
- Este gol
- Începe cu, Se termină cu
- Valori constante care sunt aceleași în toate înregistrările, cum ar fi proprietățile de control și variabilele globale și de context.
De asemenea, puteți utiliza părți ale formulei care se evaluează la o valoare constantă pentru toate înregistrările. De exemplu, Left( Language(), 2 ), Date( 2019, 3, 31 ) și Today() nu depind de nicio coloană a înregistrării, deci returnează aceeași valoare pentru toate înregistrările. Aceste valori sunt trimise către sursa de date ca o constantă și nu blochează delegarea.
Lista anterioară nu include aceste elemente notabile.
- Dacă
- *, /, Mod
- Operații de turnare a coloanei Text, Valoare
- Concatenează (inclusiv &)
- ExactIn
- Funcții de manipulare a șirurilor de caractere: Inferior, Superior, Stânga, Mijloc, Lungă, ...
- Semnale: Locație, Accelerație, Busolă, ...
- Volatile: Rand, ...
- Colecții
Delegare și colectări
Când utilizați With
, UpdateContext
sau Set
, acestea creează intern colecții. Colecțiile sunt o listă statică de înregistrări în memorie și nu participă la delegare. Nu vedeți un avertisment de delegare.
Limitări ale interogărilor
Căutare și extindere niveluri
Power Apps vă permite să utilizați până la două niveluri de căutare. O expresie de interogare poate include maximum două funcții de căutare pentru a menține performanța. Power Fx Când o expresie de interogare include o căutare, Power Apps interoghează mai întâi tabelul de bază, apoi rulează o a doua interogare pentru a extinde primul tabel cu informațiile de căutare. Un nivel suplimentar dincolo de acesta este acceptat ca maxim. Însă pentru scenariile offline, este acceptat un singur nivel de extindere a căutării.
Extindeți sau uniți până la 20 de entități într-o singură interogare. Dacă trebuie să uniți mai mult de 20 de tabele într-o singură interogare, încercați să creați o vizualizare pe serverul de date, dacă este posibil.
Evaluarea expresiei - proprietatea entității trebuie să fie în partea stângă „LHS” a operatorului de egalitate
Puneți proprietatea unei entități care urmează să fie comparată în partea stângă (LHS) a unei ecuații. De exemplu, în următoarea expresie, proprietatea entității 'Business unit ID'.Name se află pe LHS și expresia funcționează:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Dar această expresie nu funcționează:
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
Funcții de sortare
Sortarea și SortareaDupăColoane pot fi delegate.
În Sortare, formula poate fi doar numele unei singure coloane și nu include alți operatori sau funcții.
Funcții agregate
Unele funcții agregate pot fi delegate pe baza suportului back-end. Pot fi delegate funcții precum Suma, Medie, Min și Max . Funcțiile de numărare, cum ar fi CountRows și Count, pot fi, de asemenea, delegate. Dar RemoveIf și UpdateIf au restricții de delegare. Doar un număr limitat de surse de date acceptă delegarea pentru aceste funcții. Pentru mai multe informații, consultați Lista de delegații.
Funcții nedelegabile
Toate celelalte funcții nu pot fi delegate, inclusiv aceste funcții notabile:
Limite nedelegabile
Formulele care nu pot fi delegate sunt procesate local. Procesarea locală vă permite să utilizați întregul limbaj de formule. Power Apps Există însă un compromis: toate datele trebuie aduse mai întâi la dispozitiv, ceea ce poate însemna recuperarea unei cantități mari de date prin rețea. Acest proces poate dura timp și poate face ca aplicația dvs. să pară lentă sau să nu răspundă.
Pentru a evita acest lucru, Power Apps limitează implicit cantitatea de date care pot fi procesate local la 500 de înregistrări. Această limită vă permite să utilizați complet seturi de date mici și să rafinați utilizarea seturilor de date mari prin vizualizarea rezultatelor parțiale.
Fiți atenți când utilizați această funcție, deoarece poate crea confuzie utilizatorilor. De exemplu, dacă utilizați funcția Filtrare cu o formulă de selecție ce nu poate fi delegată peste o sursă de date cu un milion de înregistrări, vor fi scanate doar primele 500 de înregistrări. Dacă înregistrarea dorită este înregistrarea 501 sau 500.001, Filter nu o ia în considerare și nu o returnează.
Funcțiile agregate pot fi, de asemenea, confuze. De exemplu, dacă utilizați Average pe o coloană din aceeași sursă de date cu un milion de înregistrări, Average nu poate fi delegată deoarece expresia nu este delegată (consultați nota anterioară). Se calculează media doar pentru primele 500 de înregistrări. Dacă nu ești atent, un utilizator ar putea crede că un răspuns parțial este complet.
Modificarea limitei
Numărul implicit de înregistrări este 500, dar puteți modifica acest număr pentru o aplicație întreagă:
- Selectați Setări.
- Sub General, modificați setarea Limită rânduri de date de la 1 la 2.000.
În unele cazuri, 2.000 (sau 1.000 sau 1.500) de înregistrări sunt suficiente pentru scenariul dumneavoastră. Puteți mări acest număr pentru a se potrivi nevoilor dvs., dar pe măsură ce faceți acest lucru, performanța aplicației dvs. se poate degrada, în special pentru tabelele late cu multe coloane. Încă este cel mai bine să delegi cât mai mult posibil.
Pentru a vă asigura că aplicația dvs. poate fi scalată la seturi mari de date, setați această valoare la 1. Orice acțiune care nu poate fi delegată returnează o singură înregistrare, ceea ce este ușor de detectat la testarea aplicației. Acest lucru te ajută să eviți surprizele neplăcute atunci când muți o aplicație proof-of-concept în producție.
Avertismente delegare
Power Apps afișează un avertisment (triunghi galben) atunci când creați o formulă ce nu poate fi delegată. Acest lucru face mai ușor să știi ce este și ce nu este delegat.
Avertismentele privind delegarea apar numai pentru formulele care utilizează surse de date delegabile. Dacă nu vedeți un avertisment, dar credeți că formula dvs. nu este delegată, verificați tipul sursei de date în raport cu lista de *sursele de date delegabile* din acest articol. ...
Exemple
În acest exemplu, generați automat o aplicație cu trei ecrane bazată pe un tabel SQL Server numit [dbo].[Fruit]. Pentru a afla cum să generați aplicația, aplicați principii similare din articolul despre SQL Server. Dataverse
Proprietatea Items a galeriei folosește o formulă cu funcțiile SortByColumns și Search , ambele putând fi delegate.
În caseta de căutare, introduceți „Apple”.
Puncte în defileu apar pentru scurt timp în partea de sus a ecranului, pe măsură ce aplicația comunică cu SQL Server pentru a procesa solicitarea de căutare. Apar toate înregistrările care corespund criteriilor de căutare, chiar dacă sursa de date are milioane de înregistrări.
Rezultatele căutării includ „Mere” și „Ananas” deoarece funcția Căutare caută peste tot într-o coloană de text. Pentru a găsi doar înregistrările care conțin termenul de căutare la începutul numelui fructului, utilizați o altă funcție delegabilă, Filter, cu un termen de căutare mai specific. Pentru simplitate, eliminați apelul SortByColumns .
Noile rezultate includ „Mere” dar nu „Ananas”. Un triunghi galben apare lângă galerie și în miniatura ecranului dacă bara de navigare din stânga afișează miniaturi. O linie albastră, ondulată, apare sub o parte a formulei. Fiecare dintre aceste elemente indică un avertisment. Când treceți cu mouse-ul peste triunghiul galben de lângă galerie, apare acest mesaj:
SQL Server este o sursă de date delegabilă, iar Filter este o funcție delegabilă. Totuși, Mid și Len nu pot fi delegate niciunei surse de date.
Dar funcționează, nu-i așa? Cam. De aceea, acesta este un avertisment și nu o pată roșie, ondulată.
- Dacă tabelul are mai puțin de 500 de înregistrări, formula funcționează perfect. Toate înregistrările sunt aduse pe dispozitiv, iar *Filtrul* este aplicat local.
- Dacă tabelul are mai mult de 500 de înregistrări, formula nu returnează înregistrarea 501 sau o valoare superioară, chiar dacă aceasta corespunde criteriilor.