Canvas Apps: Filtros dinámicos y Delegación



En este artículo vamos a explorar ¿Cómo construir filtros dinámicos combinando múltiples criterios?, y como yapa el concepto de delegación, que puede marcar la diferencia entre una app que funciona bien y una que presenta resultados incompletos.

💡Filtros dinámicos con múltiples criterios

Supongamos que tenemos una tabla llamada Observation_Table con campos como Aprobador, Responsable, Gerencia, Descripción y Código. Queremos que el usuario pueda filtrar la tabla usando cualquier combinación de estos criterios. 

Es decir, que la tabla se vaya filtrado automáticamente a medida que los "Text Input" de los filtros tengan valor. Puede que el primer filtro tenga valor, o solo el del medio o todos, o ninguno. 


En Power Apps, podemos usar una fórmula como esta:


Filter(
    Observation_Table,
    IsBlank(Filter_Aprobador.Text) || StartsWith(Text(Aprobador), Filter_Aprobador.Text),
    IsBlank(Filter_Responsable.Text) || StartsWith(Text(Responsable), Filter_Responsable.Text),
    IsBlank(Filter_Gerencia.Text) || StartsWith(Text(Gerencia), Filter_Gerencia.Text),
    IsBlank(Filter_Descripcion.Text) || StartsWith(Text(Descripcion), Filter_Descripcion.Text),
    IsBlank(Filter_Codigo.Text) || StartsWith(Text(Codigo), Filter_Codigo.Text)
)

Esta lógica significa que, para cada campo de filtro, si el valor está en blanco se ignora el criterio, y si tiene datos se filtra usando StartsWith para buscar coincidencias desde el inicio del texto.

¿Por qué funciona?

Cada una de esas líneas es una condición de filtro independiente, pero todas deben cumplirse para que se incluya una fila.

Por lo tanto, una fila se incluye si:

  • Filter_Aprobador.Text está vacío O coincide con el aprobador de la fila
  • Y Filter_Responsable.Text está vacío O coincide con el responsable de la fila
  • Y Filter_Gerencia.Text está vacío O coincide con la gerente de la fila

Solo los filtros que tengan valor filtran la tabla.

Otra forma de verlo:

Imaginate que buscas correos electrónicos en tu bandeja de entrada:
  • Si completas el campo "De", solo se muestran los correos de ese remitente.
  • Si también completas "El asunto contiene", se reduce aún más.
  • Pero si borras "De", el filtro se elimina y solo se muestra "El asunto contiene".
Eso es lo que estás haciendo.


📚Hablemos de delegación: ¿Qué es la delegación en Power Apps?

La delegación es el proceso por el cual Power Apps envía la consulta o el cálculo directamente a la fuente de datos para que lo ejecute allí, devolviendo solo los resultados necesarios. Esto es fundamental cuando trabajamos con grandes volúmenes de información.

Cuando usamos funciones o condiciones no delegables (por ejemplo, StartsWith en ciertas columnas de SharePoint), Power Apps traerá solo un número limitado de registros (500 por defecto, 2000 como máximo) y aplicará el filtro localmente. Esto puede causar que falten registros en los resultados.

✅Buenas prácticas para evitar problemas

  • Usar funciones delegables siempre que sea posible (consultar documentación oficial).
  • Evitar funciones como Search, Mid o StartsWith sobre columnas no delegables.
  • Filtrar primero por criterios delegables y luego aplicar filtros adicionales localmente.
  • Considerar Dataverse o SQL si se requiere mayor flexibilidad.

📝Conclusión

Comprender cómo funcionan los filtros y la delegación en Power Apps te permitirá construir aplicaciones más rápidas y entender las limitaciones de determinadas funciones cuando hay grandes cantidades de datos detrás.

Comentarios