Comprender a delegación nunha aplicación de lenzo

Power Apps inclúe un potente conxunto de funcións para filtrar, ordenar e dar forma ás táboas de datos nunha aplicación de lenzo: as funcións Filtrar, Ordenar e AddColumns para citar só algunhas. Con estas funcións, pode proporcionar aos seus usuarios un acceso centrado á información que precisan. Para aqueles que teñen un fondo de base de datos, o uso destas funcións é o equivalente a escribir unha consulta de bases de datos.

A clave para crear aplicacións eficientes é minimizar a cantidade de datos que hai que traer ao seu dispositivo. Pode que só precise uns rexistros de entre millóns ou un único valor agregado pode representar miles de rexistros. Ou quizais só se poida recuperar o primeiro conxunto de rexistros e traer o resto como os xestos de usuario prefiren. O estar centrado pode reducir drasticamente a potencia de procesamento e a largura de banda de rede que precisa a súa aplicación, obtendo tempos de resposta máis rápidos para os seus usuarios, incluso en teléfonos conectados a través dunha rede móbil.

Delegación é onde a expresividade das fórmulas de Power Apps satisfan a necesidade de minimizar os datos que se desprazan pola rede. En resumo, Power Apps delegará o procesamento de datos á orixe de datos, en lugar de mover os datos á aplicación para o seu procesamento local.

No aspecto onde isto se complica, e a razón pola que existe este artigo, é porque non todo o que se pode expresar nunha fórmula de Power Apps pode delegarse a todas as orixes de datos. O idioma de Power Apps imita o idioma da fórmula de Excel, deseñado con acceso completo e inmediato a un libro completo da memoria, cunha ampla variedade de funcións de manipulación de textos e numéricas. Como resultado, o idioma de Power Apps é moito máis rico do que admiten a maioría das orixes de datos, incluídos potentes motores de bases de datos como SQL Server.

Traballar con grandes conxuntos de datos require empregar orixes de datos e fórmulas que se poden delegar. É o único xeito de facer que a súa aplicación funcione correctamente e de que os usuarios poidan acceder a toda a información que precisan. Teña en conta as advertencias da delegación que identifiquen os lugares nos que a delegación non é posible. Se está traballando con pequenos conxuntos de datos (menos de 500 rexistros), pode usar calquera orixe de datos e fórmula porque a aplicación pode procesar datos localmente se a fórmula non se pode delegar.

Nota

As advertencias da delegación foron marcadas anteriormente en Power Apps como suxestións de "punto azul", pero desde entón as suxestións sobre a delegación foron clasificadas de novo como advertencias. Se os datos da súa orixe de datos superan os 500 rexistros e non se pode delegar unha función, Power Apps é posible que non poida recuperar todos os datos e é posible que a súa aplicación teña resultados incorrectos. Os avisos da delegación axúdanlle a xestionar a súa aplicación para que teña resultados correctos.

Orixes de datos delegables

A delegación é compatible tan só para certas orixes de datos en forma de táboa. Se unha orixe de datos é compatible coa delegación, a súa documentación do conector describe esa compatibilidade. Por exemplo, estas orixes de datos en forma de táboa son as máis populares e admiten delegación:

Os libros de Excel importados (usando a orixe de datos Engadir datos estáticos á súa aplicación), as coleccións e as táboas almacenados en variables de contexto non precisan delegación. Todos estes datos xa están na memoria e pode aplicarse o idioma de Power Apps completo.

Funcións delegables

O seguinte paso é usar só aquelas fórmulas que se poden delegar. Aquí están incluídos os elementos da fórmula que se poderían delegar. Non obstante, cada orixe de datos é diferente e non todos eles admiten todos estes elementos. Comprobe os avisos de delegación da súa fórmula particular.

Estas listas cambiarán co paso do tempo. Estamos traballando para admitir máis funcións e operadores coa delegación.

Filtrar funcións

Filtrar, Buscar e Busca pódense delegar.

Dentro das funcións Filtrar e Buscar, pode usalas con columnas da táboa para seleccionar os rexistros axeitados:

Tamén pode usar partes da súa fórmula que avalían a un valor constante para todos os rexistros. Por exemplo, Left( Language(), 2 ), Date( 2019, 3, 31 ) e Today() non dependen de ningunha columna do rexistro e, polo tanto, devolven o mesmo valor para todos os rexistros. Estes valores poden enviarse á orixe de datos como unha constante e non bloquearán a delegación.

A lista anterior non inclúe estes elementos salientables:

Funcións de ordenación

Ordenar e SortByColumns pódese delegar.

En Ordenar, a fórmula só pode ser o nome dunha única columna e non pode incluír outros operadores ou funcións.

Agregar funcións

Suma, Media, Mín e Máx pódese delegar. Só unha cantidade limitada de orixes de datos apoia esta delegación neste momento; comprobe a lista de delegacións para obter máis detalles.

As funcións de contabilización como CountRows, CountA e Count non se poden delegar.

Outras funcións agregadas como StdevP e VarP non se poden delegar.

Funcións de conformación das táboas

AddColumns, DropColumns, RenameColumns e ShowColumns admiten a delegación parcialmente. As fórmulas dos seus argumentos pódense delegar. Non obstante, a saída destas funcións está suxeita ao límite de rexistro de non delegación.

Como neste exemplo, os fabricantes adoitan empregar AddColumns e Buscar para fusionar a información dunha táboa a outra, o cal se denomina comunmente Unir na xerga das bases de datos:

AddColumns( Products, 
    "Supplier Name", 
    LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name 
)

A pesar de que Produtos e Fornecedores poden ser orixes de datos delegables e Busca é unha función delegable, a saída da función AddColumns non é delegable. O resultado de toda a fórmula está limitado á primeira parte da orixe de datos Produtos. Debido a que a función Buscar e a súa orixe de datos son delegables, pódese atopar un resultado para Provedores en calquera parte da orixe de datos, aínda que sexa grande.

Se usa AddColumns deste xeito, Buscar debe facer chamadas independentes á orixe de datos para cada un destes primeiros rexistros en Produtos, o que causa moita carga da rede. Se Provedores é o suficientemente pequeno e non cambia a miúdo, pode chamar a función Collect en OnStart para almacenar en caché a orixe de datos na súa aplicación cando se inicia. Como alternativa, pode reestruturar a aplicación para que extraia os rexistros relacionados só cando o usuario os solicita.

Funcións non delegables

Todas as outras funcións non admiten a delegación, incluído estas funcións notables:

Límites non delegables

As fórmulas que non se poden delegar procesaranse localmente. Isto permite usar na súa totalidade a linguaxe da fórmula Power Apps. Pero a cambio dun prezo: en primeiro lugar hai que levar ao dispositivo todos os datos, o que podería implicar a recuperación dunha grande cantidade de datos a través da rede. Isto pode levar tempo, dando a impresión de que a súa aplicación vai lenta ou presenta erros.

Para evitar isto, Power Apps impón un límite á cantidade de datos que se poden procesar localmente: 500 rexistros por defecto. Escollemos este número para que aínda teña acceso completo a pequenos conxuntos de datos e poida refinar o uso de grandes conxuntos de datos ao ver resultados parciais.

Obviamente, hai que ter coidado ao usar esta instalación porque pode confundir aos usuarios. Por exemplo, considere a función Filtro cunha fórmula de selección que non se pode delegar, a través dunha orixe de datos que contén un millón de rexistros. Debido a que a filtraxe faise localmente, só se escanean os primeiros 500 rexistros. Se o rexistro desexado é o rexistro 501 ou 500.001, non será considerado nin devolto por Filtrar.

As funcións agregadas tamén poden causar confusión. Tome a Media nunha columna desa mesma orixe de datos dun millón de rexistros. A Media aínda non se pode delegar, polo que só se atopa a media dos primeiros 500 rexistros. Se non ten coidado, unha resposta parcial podería ser mal interpretada como unha resposta completa por parte do usuario da súa aplicación.

Cambio do límite

500 é o número predeterminado de rexistros, pero pode cambiar este número para unha aplicación completa:

  1. No separador Ficheiro, seleccione Configuración da aplicación.
  2. En Configuración avanzada, cambie o axuste Límite da fila de datos para consultas non delegables de 1 a 2000.

Nalgúns casos, saberá que 2.000 (ou 1.000 ou 1.500) satisfarán as necesidades do seu escenario. Con coidado, pode aumentar este número para adaptalo ao seu escenario. A medida que aumente este número, o rendemento da aplicación pode reducirse, especialmente con táboas amplas con moitas columnas. Aínda así, a mellor resposta é delegar o máximo que poida.

Para garantir que a aplicación poida escalar a grandes conxuntos de datos, reduza esta configuración a 1. Todo o que non se poida delegar devolverá un único rexistro, o cal debe ser fácil de detectar ao probar a súa aplicación. Isto pode axudar a evitar sorpresas ao tentar levar unha aplicación de proba de concepto á fase de produción.

Avisos de delegación

Para que resulte máis fácil saber que se está delegando e que non, Power Apps fornece un aviso (triángulo amarelo) cando crea unha fórmula que contén algo que non se pode delegar.

Os avisos sobre delegacións aparecen só en fórmulas que funcionan en orixes de datos delegables. Se non ve un aviso e cre que a súa fórmula non está a ser delegada correctamente, verifique o tipo de orixe de datos na lista de orixes de datos delegables anteriormente neste tema.

Exemplos

Para este exemplo, xerará automaticamente unha aplicación de tres pantallas baseada nunha táboa de SQL Server chamada [dbo].[Fruit]. Para obter información sobre como xerar a aplicación, pode aplicar principios similares no tema sobre Common Data Service en SQL Server.

Aplicación de tres pantallas

A propiedade Items da galería está establecida nunha fórmula que contén as funcións SortByColumns e Buscar, as cales poden delegarse.

Na caixa de busca, escriba "Mazá".

Aparecerán puntos en movemento momentaneamente preto da parte superior da pantalla mentres a aplicación se comunica con SQL Server para procesar a solicitude de busca. Aparecerán todos os rexistros que cumpren os criterios de busca, aínda que a orixe de datos conteña millóns de rexistros.

Control da entrada de texto da busca

Entre os resultados da busca inclúense "Mazás", "Mazás silvestres" e "Piña" porque a función Buscar realiza buscas en todas as partes dunha columna de texto. Se quería atopar só rexistros que conteñan o equipo de busca ao comezo do nome da froita, pode usar outra función delegable, Filtrar, cun termo de busca máis complicado. (Para maior simpleza, elimine a chamada SortByColumns).

Eliminar a chamada SortByColumns

Os novos resultados inclúen "Mazás", pero non "Mazás silvestres" ou "Piña". Non obstante, aparecerá un triángulo amarelo xunto á galería (e na miniatura da pantalla se a barra de navegación da esquerda mostra miniaturas), así como unha liña azul e ondulada baixo unha parte da fórmula. Cada un destes elementos indica un aviso. Se pasa o punteiro do rato sobre o triángulo amarelo situado a carón da galería, aparecerá esta mensaxe:

Pase o punteiro do rato sobre o aviso de delegación

SQL Server é unha orixe de datos delegable e Filtro é unha función delegable, non obstante, Medio e Len non se poden delegar a ningunha orixe de datos.

Pero funcionou, non si? Ben, máis ou menos. Ese é o motivo polo que isto é unha advertencia e non un garabato vermello e ondulado.

  • Se a táboa contén menos de 500 rexistros, a fórmula funcionou perfectamente. Todos os rexistros foron levados ao dispositivo e aplicouse Filtro localmente.
  • Se a táboa contén máis de 500 rexistros, a fórmula non devolverá o rexistro 501 nin ningún superior, aínda que coincida cos criterios.