Advertencias de delegación, límites y funciones no delegables

Completado

Power Apps usa elementos visuales para ayudarle a saber cuándo se está produciendo la delegación mientras crea la aplicación. El portal del creador tiene también una configuración que puede ajustar para aumentar la cantidad de datos que se devuelven cuando la delegación no es posible.

Advertencias de delegación

Cada vez que use una función no delegable, Power Apps la subrayará con una línea azul y mostrará un triángulo de advertencia amarillo, tal y como se muestra aquí.

Captura de pantalla de la función no delegable con línea azul y triángulo amarillo de advertencia.

Esto le ofrece una indicación visual clara que señala que la delegación no se está realizando, lo que significa que probablemente no vea todos los datos. Es importante saber un par de cosas sobre este indicador visual.

  • Power Apps mostrará esta advertencia sea cual sea el tamaño del origen de datos. La advertencia seguirá apareciendo aunque el origen de datos tenga solo unos cuantos elementos y la delegación no esté provocando ningún problema técnico. Recuerde que los primeros 500 artículos se devuelven por defecto y se procesan localmente. La advertencia aparece siempre que la fórmula no se delega.

  • El indicador de advertencia procesa únicamente el primer elemento que provoca la delegación. En la captura de pantalla anterior, fíjese en que solo el campo "FirstName" está subrayado de color azul. Esto se debe a que fue el primer elemento en provocar la delegación. En este escenario, "Apellidos" también provocaría la delegación. Esto puede resultar confuso, ya que normalmente se intenta dirimir cuál es la diferencia entre FirstName y LastName en lugar de solucionar el problema real, que es la función Search. Si se encuentra con esta confusión, reorganice la fórmula. Esto la validará y, sea cual sea el primer campo, mostrará el problema.

    Captura de pantalla del indicador de advertencia del primer elemento que provocó la delegación

  • Este indicador visual solo existe en el Maker Portal, cuando se compila la aplicación. Cuando un usuario ejecute la aplicación, no recibirá ninguna notificación que le avise de que la delegación no se está produciendo y de que probablemente solo esté viendo resultados parciales. Téngalo en cuenta al diseñar la aplicación y compílela como corresponda.

Cambiar el número de registros devueltos cuando la delegación no esté disponible

Cuando una fórmula no puede delegar en el origen de datos por el motivo que sea, Power Apps recupera de forma predeterminada los primeros 500 registros de ese origen de datos y procesa la fórmula localmente. Power Apps es compatible con el ajuste de este límite de 1 a 2000. Puede ajustar este límite en la configuración avanzada.

  1. En el portal del creador, seleccione Archivo en la esquina superior izquierda.

  2. En el menú situado más a la izquierda, seleccione Configuración.

  3. En Configuración de la aplicación, seleccione Configuración avanzada.

  4. Establezca el límite de la fila de datos de las consultas no delegables en un valor situado entre 1 y 2000.

  5. Después de establecer el límite, seleccione la flecha de la parte superior izquierda para guardar el cambio y volver al Maker Portal.

Captura de pantalla de la configuración avanzada de Power Apps con el límite de la fila de datos establecido.

Hay dos motivos principales por los que conviene ajustar este límite.

  • Para aumentar el límite si se trabaja con datos en los que no bastan 500 registros, pero sí una cifra inferior a 2000. Por ejemplo, si tiene una lista de clientes y sabe que nunca tendrá más de 1000 clientes, puede diseñar la aplicación para que omita la delegación y devuelva siempre todos los 1000 registros.

  • Para reducir el límite a 1 o 10 como ayuda al realizar pruebas. Si se encuentra en situaciones en las que no está seguro de si una función no delegable causa problemas en la aplicación, puede reducir el límite y probar. Si establece el límite en 1 y la galería muestra únicamente un registro, sabrá que tenía una función no delegable. Esta configuración acelera el proceso de solución de problemas.

Funciones no delegables

En la unidad anterior, ha conocido las funciones que son delegables y cómo se relacionan con los distintos orígenes de datos. Estas otras funciones (que no se abordan en esa unidad) no son delegables. Las siguientes son funciones importantes que no admiten la delegación.

  • First, FirstN, Last, LastN

  • Choices

  • Concat

  • Collect, ClearCollect (Ninguna de estas funciones devuelve una advertencia de delegación, pero no son delegables)

  • CountIf, RemoveIf, UpdateIf

  • GroupBy, Ungroup

Ninguna de estas funciones es delegable. De modo que, si se agregan a una fórmula, se podría tomar una función delegable previamente y convertirla en no delegable, tal y como reflejaba el ejemplo anterior.

Funciones delegables parcialmente compatibles

Las siguientes funciones de modelado de tabla se consideran parcialmente delegables. Esto significa que se pueden delegar fórmulas en sus argumentos. Sin embargo, la salida de estas funciones está sujeta al límite de registro sin delegación.

  • AddColumns

  • DropColumns

  • ShowColumns

  • RenameColumns

Un patrón común es usar AddColumns y LookUp para mezclar información de una tabla en otra, lo que comúnmente se conoce como una combinación en la jerga de bases de datos. Por ejemplo:

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

Aunque Products y Suppliers sean orígenes de datos potencialmente delegables y la función LookUp esté en la categoría de delegable, la función AddColumns tiene una capacidad de delegación parcial. Por lo tanto, el resultado de la fórmula completa se limitará al segmento inicial del origen de datos Products.

Aunque la función LookUp y el origen de datos asociado permiten la delegación, lo que facilita el descubrimiento de proveedores en un amplio conjunto de datos, hay que destacar algo importante. LookUp requiere consultas separadas en el origen de datos para cada uno de los registros iniciales en Products, lo que genera una mayor actividad de red. Sin embargo, si el conjunto de datos de Suppliers es relativamente pequeño y permanece estable, otra posibilidad sería almacenar en caché el origen de datos dentro de la aplicación. Si empleamos una llamada a Collect durante la inicialización de la aplicación (con OnVisible en la pantalla inicial), podrá haber operaciones LookUp posteriores directamente desde dentro del origen de datos almacenado en caché, lo que mitigará el tráfico en la red.