Limitacions de les consultes: límits de delegació i consulta
Entendre la delegació
Power Apps Funciona millor amb una font de dades de back-end quan una Power Fx consulta es pot traduir completament en una consulta equivalent que es pot executar a la font de dades. Power Apps Envia una consulta que entén la font de dades, la consulta es realitza a la font de dades i es retornen els resultats de la consulta Power Apps. Per exemple, la font de dades pot fer la feina de filtrar les dades de la font de dades i només retornar les files que compleixen els criteris de filtre. Quan funciona correctament, diem que la consulta es delega a la font de dades per fer el treball de la consulta.
Tanmateix, Power Fx les consultes no sempre es poden traduir en consultes equivalents a totes les fonts de dades. Per exemple, Dataverse admet més funcions de consulta que Excel. Dataverse admet l'operador de consulta "in" (pertinença) i l'Excel no. Diem que la consulta no es pot delegar si una consulta utilitza una característica que la font de dades no admet. En general, si alguna part d'una expressió de consulta no és delegable, no deleguem cap part de la consulta.
Quan una consulta no es pot delegar, Power Apps només obté els primers 500 registres de la font de dades i després realitza les accions de la consulta. Aquest límit es pot augmentar a 2.000 registres Canviant el límitPower Apps limita la mida del resultat a 500 registres per preservar el bon rendiment de Power Apps. A través de l'experimentació, hem descobert que els conjunts de resultats superiors a aquestes mides introdueixen problemes de rendiment per a l'aplicació i Power Apps , en general.
Tanmateix, aquesta limitació pot ser un problema, ja que la consulta pot retornar resultats incorrectes si les dades de la font de dades superen els 500/2000 registres. Per exemple, considereu l'exemple en què la vostra font de dades té 10 milions de registres i la vostra consulta ha d'operar sobre l'última part de les dades. (Per exemple, els cognoms que comencen per "Z") Tanmateix, la consulta té un operador no delegable (per exemple, diferent). En aquest cas, només s'obtenen els primers registres 500/2000 i es tenen resultats incorrectes.
Creeu les consultes Power Fx mitjançant les taules delegables de la font de dades. Només heu d'utilitzar funcions de consulta que es puguin delegar. És l'única manera de mantenir el bon rendiment de l'aplicació i assegurar-se que els usuaris puguin accedir a tota la informació que necessiten.
Us heu d'ocupar dels avisos de delegació que identifiquen els llocs en què la delegació no és possible. Si treballeu amb conjunts de dades petits (menys de 500 registres), podeu utilitzar qualsevol font de dades i fórmula, ja que l'aplicació pot processar dades localment si no es pot delegar la fórmula.
Nota
Els avisos de delegació us ajudaran a administrar l'aplicació per tal que tingui resultats correctes. Si les dades de la font de dades superen els 500 registres i no es pot delegar una funció, Power Fx marcarà la fórmula amb un subratllat blau.
Fonts de dades delegables
La delegació és compatible amb determinades fonts de dades només tabulars. Si una font de dades admet la delegació, la documentació del connector descriu aquesta admesa. Per exemple, aquestes fonts de dades tabulars són les més habituals i admeten la delegació:
- Power Apps funcions i operacions delegables per a Microsoft Dataverse
- Power Apps funcions i operacions delegables per a SharePoint
- Power Apps funcions i operacions delegables per a SQL Server
- Power Apps funcions i operacions delegables per a Salesforce
Els llibres de treball de l'Excel importats (mitjançant l'aplicació Afegeix dades estàtiques a l'aplicació font de dades), les col·leccions i les taules emmagatzemades en variables de context no requereixen delegació. Totes aquestes dades ja estan en memòria i el llenguatge complet del Power Apps es pot aplicar.
Funcions delegables
El pas següent és utilitzar només les fórmules que es poden delegar. S'inclouen aquí els elements de fórmula que es podrien delegar. No obstant, cada font de dades és diferent i no totes admeten tots aquests elements. Cerqueu avisos de delegació a la fórmula concreta.
Funcions de filtratge
Es poden delegar Filter, Search, First i LookUp .
Dins de les funcions Filtre i Cerca, podeu utilitzar-les amb columnes de la taula per seleccionar els registres adequats:
- I (incloent &), O (inclòs ||), No (inclòs !)
- Dins
Nota
In només es delega per a les columnes de la font de dades base. Per exemple, si la font de dades és Taula de comptes ,
Filter(Accounts, Name in ["name1", "name2"])
delega a la font de dades per a la seva avaluació. Tanmateix,Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
no delega ja que la columna Fullname es troba en una taula diferent (PrimaryContact) que Comptes. L'expressió s'avalua localment. - =, <>, >=, <=,, > <
- +, -
- TrimEnds
- Està en blanc
- Comença amb,Acaba amb
- Valors constants que són els mateixos en tots els registres, com ara les propietats de control i les variables globals i de context.
També podeu utilitzar porcions de la fórmula que avaluïn un valor constant per a tots els registres. Per exemple, Left( Language(), 2 ), Date( 2019, 3, 31 ) i Today() no depenen de cap columna del registre i, per tant, retornen el mateix valor per a tots els registres. Aquests valors es poden enviar a la font de dades com a constant i no bloquejaran la delegació.
La llista anterior no inclou aquests elements importants:
- Si
- *, /, Mod
- Operacions de conversió de columnes Text,Value ...
- Concatenar (inclosos &)
- Exacta
- Funcions de manipulació de cadenes: Inferior, Superior, Esquerra, Mitjana, Len, ...
- Senyals: Ubicació,Acceleració,Brúixola ... ..., ...
- Volàtils: Rand, ...
- Coŀleccions
Limitacions de les consultes
Nivells de cerca
Power Apps admet dos nivells de cerca. Això vol dir que una Power Fx expressió de consulta pot tenir, com a màxim, dues funcions de cerca. Aquesta limitació és per preservar el rendiment. Si una expressió de consulta inclou una cerca, Power Apps primer fa una consulta per obtenir la taula base. A continuació, fa una segona consulta que expandeix la primera taula amb la informació de cerca. Donem suport a un nivell més més enllà d'això com a màxim. Per a fora de línia, però, només admetem un nivell d'expansió de cerca.
Avaluació de l'expressió: la propietat de l'entitat ha d'estar al costat esquerre 'LHS' de l'operador d'igualtat
És important col·locar la propietat d'una entitat a comparar en una expressió al costat esquerre 'LHS' d'una equació. Per il·lustrar-ho, a l'exemple següent la propietat de l'entitat 'Identificador de la unitat de negoci'. Name és un valor de propietat i s'ha de col·locar al LHS de l'expressió que s'ha d'avaluar. L'expressió següent té èxit:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Tanmateix, aquesta expressió no:
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
Funcions d'ordenació
Es poden delegar Sort i SortByColumns .
A Ordena , la fórmula només pot ser el nom d'una sola columna i no pot incloure altres operadors o funcions.
Funcions d'agregació
Algunes funcions agregades es poden delegar en funció del suport de back-end. Es poden delegar funcions com Sum, Average, Min i Max . També es poden delegar funcions de recompte, com ara CountRows i Count. No obstant això , RemoveIf i UpdateIf tenen restriccions de delegació. Actualment, només un nombre limitat de fonts de dades admeten la delegació d'aquestes funcions. Per a més detalls, consulteu la llista de delegacions.
Funcions no delegables
Totes les altres funcions no admeten la delegació, incloent-hi aquestes funcions notables:
Límits no delegables
Les fórmules que no es poden delegar es processaran localment. El processament local permet utilitzar tota l'amplitud del llenguatge de la Power Apps fórmula. Però a un preu: totes les dades han de ser incorporades al dispositiu en primer lloc, la qual cosa podria implicar recuperar una gran quantitat de dades a través de la xarxa. Això pot trigar temps i donar la impressió que la vostra aplicació és lenta o possiblement s'hagi bloquejat.
Per evitar-ho, el Power Apps imposa un límit en la quantitat de dades que es poden processar localment: 500 registres per defecte. Vàrem triar aquest número per tal que continuéssiu tenint l'accés complet als conjunts de dades petits i poguéssiu refinar l'ús dels grans conjunts de dades veient resultats parcials.
Òbviament, s'ha d'anar amb compte quan s'utilitza aquesta ajuda perquè pot confondre els usuaris. Per exemple, considereu una funció Filter amb una fórmula de selecció que no es pot delegar, sobre una font de dades que conté un milió de registres. Com que el filtratge es fa localment, només s'analitzen els primers 500 registres. Si el registre desitjat és el registre 501 o 500.001, el filtre no el té en compte ni el retorna .
Les funcions agregades també poden provocar confusió. Preneu Mitjana sobre una columna d'aquesta mateixa font de dades d'un milió de registres. La mitjana no es pot delegar en aquest cas, ja que l'expressió no està delegada (vegeu la nota anterior), de manera que només es fa la mitjana dels primers 500 registres. Si no teniu cura, una resposta parcial podria interpretar-se erròniament com una resposta completa per un usuari de l'aplicació.
Canviar el límit
500 és el nombre de registres per defecte, però podeu canviar aquest número per a tota una aplicació:
- Seleccioneu Configuració.
- A General, canvieu la configuració del límit de fila de dades d'1 a 2000.
En alguns casos, saps que 2.000 (o 1.000 o 1.500) satisfaran les necessitats del vostre escenari. Amb atenció, podeu incrementar aquest nombre per adaptar-lo a l'escenari. A mesura que augmenteu aquest número, el rendiment de l'aplicació pot degradar-se, especialment per a taules amples amb moltes columnes. No obstant això, la millor resposta és delegar tant com pugueu.
Per assegurar-vos que l'aplicació es pugui escalar a conjunts de dades grans, reduïu aquesta configuració a 1. Qualsevol cosa que no pugui ser delegada torna un únic registre, que hauria de ser fàcil de detectar quan es prova l'aplicació. Això pot ajudar-vos a evitar sorpreses quan intenteu actualitzar una aplicació de prova de concepte a producció.
Advertiments de delegació
Per tal que sigui més fàcil conèixer el que s'està delegant i el que no, el Power Apps proporciona un advertiment (triangle groc) quan creeu una fórmula que contingui una cosa que no es pot delegar.
Els advertiments de delegació només apareixen a les fórmules que actuen sobre fonts de dades delegables. Si no veieu cap advertiment i creieu que la fórmula no s'està delegant correctament, comproveu el tipus de font de dades a la llista de fonts de dades delegables anteriorment en aquest article.
Exemples
Per a aquest exemple, generareu automàticament una aplicació de tres pantalles basada en una taula de l'SQL Server anomenada [dbo].[ Fruita]. Per obtenir informació sobre com generar l'aplicació, podeu aplicar principis similars a l'article sobre l'SQL Dataverse Server.
La propietat Items de la galeria es defineix en una fórmula que conté les funcions SortByColumns i Search , que es poden delegar.
Al quadre de cerca, escriviu "Apple".
Uns punts animats es mostren momentàniament a prop de la part superior de la pantalla mentre l'aplicació es comunica amb l'SQL Server per processar la sol·licitud de cerca. Tots els registres que compleixin els criteris de la cerca apareixen, fins i tot si la font de dades conté milions de registres.
Els resultats de la cerca inclouen "Pomes" i "Pinya" perquè la funció de cerca mira a tot arreu en una columna de text. Si voleu trobar només registres que continguin el terme de cerca a l'inici del nom de la fruita, podeu utilitzar una altra funció delegable,Filtre , amb un terme de cerca més complicat. (Per simplificar, elimineu el SortByColumns .)
Els nous resultats inclouen "pomes", però no "pinya". No obstant, un triangle groc apareix al costat de la galeria (i a la miniatura de la pantalla si barra de navegació esquerra mostra les miniatures) i es mostra una línia blava i ondulada en una part de la fórmula. Cadascun d'aquests elements indica un avís. Si passeu el cursor per sobre del triangle groc que hi ha al costat de la galeria, es mostrarà aquest missatge:
SQL Server és una font de dades delegable i Filter és una funció delegable, però, Mid i Len no es poden delegar a cap font de dades.
Però funcionava, oi? Bé, a mitges. I és per això que es tracta d'un advertiment i no d'una línia vermella ondulada.
- Si la taula conté menys de 500 registres, la fórmula funciona perfectament. Tots els registres es van portar al dispositiu i el filtre es va aplicar localment.
- Si la taula conté més de 500 registres, la fórmula no retornarà el registre 501 o superior, encara que coincideixi amb els criteris.
Consulteu també
Impacte de l'ús de funcions no delegables i límits de fila de dades inadequats en el rendiment
Consells de rendiment i pràctiques recomanades per utilitzar la delegació