Comparteix a través de


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ímit Power 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 seva documentació del connector descriu la compatibilitat. Per exemple, aquestes fonts de dades tabulars són les més habituals i admeten la delegació:

Els llibres de treball de l'Excel importats (amb la font de dades Afegiu dades estàtiques a l'aplicació), les col·leccions i les taules desades en variables de context no requereixen la 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 Filter i de LookUp, podeu utilitzar-les amb columnes de la taula per seleccionar els registres adients:

  • And (incloent-hi &&), Or (incloent-hi ||), Not (incloent-hi !)
  • A

    Nota

    A només es delega per a les columnes de font de dades base. Per exemple, si la font de dades de la taula és Comptes, Filter(Accounts, Name in ["name1", "name2"]) es delegarà a la font de dades per l'avaluació. Tanmateix, Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) no delegate degut a que la columna Fullname és una taula diferent (PrimaryContact) de Accounts. L'expressió s'avalua localment.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • Els valors constants que són els mateixos en tots els registres, com ara les propietats de control i les variables globals i contextuals.

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, us retornarà 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:

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ó

Sort i SortByColumns es poden delegar.

A Sort, la fórmula només pot ser el nom d'una única columna i no pot incloure altres operadors o funcions.

Funcions d'agregació

Algunes funcions agregades es poden delegar en funció del suport al back-end. Sum, Average, Min i Max es poden delegar. També es poden delegar funcions de recompte com CountRows i Count . Només un nombre limitat de fonts de dades admeten aquestes funcions per a la delegació en aquest moment. Per a més informació, vegeu Llista de delegacions. ...

El suport de delegació RemoveIf i UpdateIf està en Experimental i desactivat per defecte.

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, en 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, no es considerarà o retornarà amb Filter.

Les funcions agregades també poden provocar confusió. Penseu en Average en una columna d'aquesta mateixa font de dades de milions de registres. La mitjana no es pot delegar en aquest cas perquè l'expressió no està delegada (vegeu la nota anterior), de manera que només es propaguen els 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ó:

  1. Seleccioneu Configuració.
  2. A General, canvieu paràmetre Límit de files 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].[Fruit]. Per obtenir informació sobre com generar l'aplicació, podeu aplicar principis similars a l'article sobre l'SQL Dataverse Server.

Aplicació de tres pantalles

La propietat Items de la galeria està definida com a una fórmula que conté les funcions SortByColumns i Search, ambdues de les quals 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.

Control d'entrada de text de cerca

Els resultats de la cerca inclouen "Apples" i "Pineapple" perquè la funció Cerca consulta a tot arreu en una columna de text. Si només voleu cercar registres que continguin el terme de cerca a l'inici del nom del centre, podeu utilitzar una altra funció delegable, Filtra amb un terme de cerca més semblant. (Per simplificar, traieu la trucada SortByColumns .)

Suprimir la trucada SortByColumns.

Els nous resultats inclouen "Apples" però no "Pineapple". 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:

Passar el cursor per sobre de l'advertiment de delegació.

L'SQL Server és una font de dades delegable i Filter és una funció delegable, però, Mid i Len no es poden delegar en 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 s'han incorporat al dispositiu, i Filter s'ha aplicat 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 que no es poden delegar i límits de files de dades inapropiat en el rendiment
Consells i pràctiques recomanades de rendiment per utilitzar la delegació

Nota

Ens podeu dir quines són les vostres preferències d'idioma per a la documentació? Responeu una breu enquesta. (tingueu en compte que l'idioma de l'enquesta és l'anglès)

Trigareu uns set minuts a completar l'enquesta. No es recopilen dades personals (declaració de privadesa).