💡 Introducción: Superando el Límite de 500/2000 Registros

Uno de los desafíos más comunes que enfrentan los Makers al desarrollar Power Apps Canvas es la gestión eficiente de grandes volúmenes de datos. Cuando una aplicación se vuelve lenta o no muestra todos los registros esperados, la causa principal suele ser la No-Delegación y la ineficiente gestión de datos en la memoria local.

💻 Desarrollo Técnico: La Delegación como Pilar del Rendimiento

La Delegación es la capacidad de Power Apps de «delegar» el procesamiento de datos (filtrado, ordenación, búsqueda) directamente al sistema de origen de datos (como Dataverse, SQL Server o SharePoint). Esto significa que la fuente de datos realiza el trabajo pesado y solo devuelve a la aplicación los registros exactos que necesita, en lugar de intentar descargar toda la tabla.

🛠️ Fórmulas y Funciones Delegables vs. No Delegables

Cuando se utiliza una función delegable, Power Apps le pide a la fuente que procese la consulta. Cuando se usa una función no delegable, Power Apps descarga el límite de registros permitidos (por defecto 500, ampliable a 2000) y realiza el procesamiento localmente. Este límite de 500/2000 registros es el error más común que se debe evitar.

Función Delegable TípicaFunción No Delegable TípicaRecomendación
Filter(), Search() (en Dataverse)Filter() (con condiciones complejas en SharePoint)Utilizar Dataverse o SQL como fuente principal.
Sort(), SortByColumns()ClearCollect() (en la carga inicial)Minimizar colecciones y operar sobre la fuente directa.
Operadores: =, <>, <, >Operadores: Not, In (en algunos contextos)Usar Delegation Warnings para refactorizar.
✏️ Nota: Para fuentes como SharePoint, las funciones Search() y LookUp() tienen restricciones estrictas; solo funcionan correctamente con la delegación si la columna de búsqueda es indexable. Siempre preste atención al triángulo azul o amarillo de advertencia.

⚙️ Carga Diferida (Lazy Loading) para la Experiencia de Usuario

La Carga Diferida es un patrón de diseño que se utiliza para mejorar la velocidad de inicio de la aplicación. En lugar de cargar todos los datos, imágenes y componentes al iniciar la app, solo se cargan los elementos que el usuario está viendo actualmente o que son estrictamente necesarios.

Para Canvas Apps, esto se aplica principalmente a:

  1. Galerías: Las galerías cargan automáticamente los registros a medida que el usuario se desplaza (una forma de carga diferida).
  2. Pantallas (Screens): Utilice la función LoadData() con prudencia y no cargue todas las colecciones y variables globales en el App.OnStart. En su lugar, utilice la propiedad OnVisible de cada pantalla para cargar solo los datos que esa pantalla necesita.

Ejemplo de Optimización con OnVisible:

En lugar de poner todas las llamadas a colecciones en App.OnStart:

// En App.OnStart (Malo, tarda en cargar la app)
ClearCollect(ColClientes, 'Clientes');
ClearCollect(ColProductos, 'Productos');

Optimice usando el evento Screen.OnVisible:

// En Screen1.OnVisible (Bueno, carga solo cuando se necesita)
If(IsEmpty(ColClientes), ClearCollect(ColClientes, 'Clientes'));

✍️ Mini Ejercicio Práctico: Identificación y Corrección de Delegación

Objetivo: Identificar un problema de delegación y corregirlo en una fórmula simple.

  1. Cree una nueva Canvas App y conéctela a una lista de SharePoint o una tabla de Dataverse con más de 500 registros.
  2. Inserte una galería y en su propiedad Items, use la siguiente fórmula (NO DELEGABLE en la mayoría de las fuentes relacionales):
Filter('MiTablaGrande', Not(StartsWith(Nombre, "A")))
  1. Observe la advertencia de delegación (el triángulo azul) en la barra de fórmulas. La aplicación solo está filtrando los primeros 500/2000 registros descargados.
  2. Corrección (Delegable): Cambie la fórmula a una operación delegable (asumiendo que la fuente lo soporta):
Filter('MiTablaGrande', StartsWith(Nombre, "B"))
  1. Observe cómo la advertencia desaparece. La base de datos ahora procesa el filtro, asegurando que todos los registros de la tabla sean considerados.

💡 Usa el siguiente Sandbox para tus pruebas!

Power Fx Interactive Sandbox: Registros

Cargando el entorno interactivo de Power Fx…

📚 Fuentes Consultadas

Deja un comentario

¡Gracias por tu mensaje!

Me pondré en contacto tan rápido como pueda.

Descubre más desde Power Platform En Español

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo