Limitacions de consultes: Límits de delegació i consulta

Comprensió de la delegació

Power Apps Funciona millor amb un font de dades back-end quan una consulta es pot traduir completament en una Power Fx consulta equivalent que es pot executar al font de dades. Power Apps Envia una consulta que el font de dades entén, la consulta es realitza al font de dades i es retornen els resultats de la consulta Power Apps. Per exemple, el font de dades podria fer la feina de filtrar les dades a la font de dades i només retornar les files que compleixin els criteris de filtre. Quan això funciona correctament, diem que la consulta es delega en el font de dades per fer la feina 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 "en" (pertinença) i l'Excel no. Diem que la consulta no és delegable si una consulta utilitza una funció que el 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 és delegable,només Power Apps obté els primers 500 registres de la font de dades i després realitza les accions en la consulta. Aquest límit es pot acumular a 2.000 registres Si canvieu el límit , es limita la mida del resultat a 500 registres Power Apps per preservar un bon rendiment de Power Apps. A través de l'experimentació, hem descobert que els resultats superen aquestes mides, introdueixen problemes de rendiment per a l'aplicació i Power Apps , en general, per a l'aplicació.

No obstant això, aquesta limitació pot ser un problema, ja que la consulta pot retornar resultats incorrectes si les dades del font de dades superen els registres 500/2000. Per exemple, considereu l'exemple en què el vostre font de dades té 10 milions de registres i la vostra consulta ha d'operar a l'última part de les dades. (Per exemple, els cognoms que comencen per "Z") No obstant això, la consulta té un operador no delegable (per exemple, diferent). En aquest cas, només obtindreu els primers registres 500/2000 i teniu resultats incorrectes.

Creeu les vostres consultes utilitzant les Power Fx taules delegables del vostre 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 garantir 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 perquè l'aplicació pot processar dades localment si la fórmula no es pot delegar.

Nota

Els avisos de delegació us ajudaran a administrar l'aplicació per tal que tingui resultats correctes. Si les dades del vostre font de dades superen els 500 registres i una funció no es pot delegar, Power Fx marcarem 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 pot delegar el filtre, la cerca, el primer i la cerca .... ... ...

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 la consulta

Nivells de cerca

Power Apps Admet dos nivells de cerca. Això significa que una expressió de Power Fx 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 amplia la primera taula amb la informació de cerca. Donem suport a un nivell més enllà d'això com a màxim. Per a fora de línia, però, només admetem un nivell d'expansió de la 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ó a la part esquerra "LHS" d'una equació. Per il·lustrar-ho, a l'exemple següent la propietat de l'entitat "Identificador d'unitat de negoci". Name és un valor de propietat i s'ha de col·locar al LHS de l'expressió a avaluar. L'expressió següent succeeix:

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 permetrà:

 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 ara 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à desactivat per defecte a Experimental.

Funcions indelegables

Totes les altres funcions no admeten la delegació, incloent-hi aquestes funcions notables:

Límits indelegables

Les fórmules que no es poden delegar es processaran localment. El processament local permet utilitzar tota l'amplitud del llenguatge de Power Apps fórmules. 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 teu 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 garantir que l'aplicació es pugui escalar a conjunts de dades grans, reduïu aquesta opció de 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 vostra fórmula no s'està delegant correctament, comproveu el tipus de font de dades amb la llista de fonts de dades delegables que hi ha 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).