Power Apps cuenta con más de cien funciones utiles diferentes con las cuales podemos crear aplicaciones impresionantes y funcionales aun si solo sabemos lo básico. El día de hoy vamos a explorar algunas de estas funciones que pueden resultarte familiares pero que también puedas no entender, por lo que mostraremos formas prácticas de usarlas en nuestras propias aplicaciones, estas son:
- COALESCE
- SIN
- UNGROUP
- SEQUENCE
- TRACE
- JSON
- GUID.
FUNCIÓN COALESCE
La función COALESCE toma una serie de valores y regresa el primer valor no-vacío (usandolo en la propiedad Text de un label).
Coalesce(Blank(), 2)
Output: 2
Razones para usarla: COALESCE es una forma simple de mostrar un valor por defecto cuando una variable es igual a un valor vacío.
Coalesce(varSomething, "Default Text")
Es más sencillo utilizar COALESCE que escribir un ‘statement’ IF con la función ISBLANK.
If(!IsBlank(varSomething), varSomething, "Default Text")
También podemos escribir una función PATCH para insertar un nuevo registro o actualizar alguno ya existente en lugar de hacerlo dos veces.
Patch(datasource_name,
Coalesce(Lookup(datasource_name, ID=some_value), Defaults(datasource_name),
{ColumnName: "Text Value"}
)
Si lo hicieramos sin Coalesce se ve así
If(
!IsBlank(Lookup(datasource_name, ID=some_value))
Patch(datasource_name,
Lookup(datasource_name, ID=some_value),
{ColumnName: "Text Value"}
),
Patch(datasource_name,
Defaults(datasource_name),
{ColumnName: "Text Value"}
)
)
FUNCIÓN SIN
Esta es una función importante en trigonometría. Cuando la trazamos en un gráfico obtenemos algo así:
Razones para usarla: Las animaciones son una gran forma de llamar la atención del usuario a la hora de usar nuestra app y realizar acciones que necesiten.
Esta animación se logró usando el siguiente código en la propiedad Y del ícono de la flecha en donde 275 es la posición inicial de Y y quiero que se mueva de arriba hacia abajo por 60.
246-Sin(Timer1.Value/Timer1.Duration2Pi())*60
También necesitaremos un temporizador con estas propiedades para que funcione correctamente.
FUNCIÓN UNGROUP
Esta función es usada para deshacer agrupamientos en una colección y regresar registros separados.
Razones para usarla: Con un poco de creatividad nos encontramos con que UNGROUP puede unir dos colecciones en una tal y como lo haría LEFT JOIN en SQL.
El código para crear la tabla de Resultado es:
Ungroup( DropColumns( AddColumns( Ventas,"Agrupamiento",Filter( Catalogo,Catalogo[@Product_ID]=Ventas[@Product_ID]) ), "Product_ID"), "Agrupamiento")
De igual manera es bueno aprovechar la función UNGROUP cuando creamos filtros desplegables para una galería. Junto con la función DISTINCT podemos crear una lista de valores únicos con un valor vacío hasta arriba.
Ungroup(
Table(
{MyTables: Table({Result: Blank()})},
{MyTables: RenameColumns(
Distinct('Paid Time Off', Employee),
"Result", "Value")
}
),
"MyTables"
)
FUNCIÓN SEQUENCE
La función SEQUENCE genera un rango de números y da como salida una tabla con una sola columna.
Sequence(10)
Output: [1,2,3,4,5,6,7,8,9,10]
Razones para usarla: Al combinar la función SEQUENCE con la función FORALL se nos permite ir más allá de crear simples listas de números; podremos crear fechas, cartas[?] y muchas más posibilidades, tanto que no alcanzaría a listarlas aquí.
En el menú desplegable que tenemos a continuación le permito al usuario seleccionar una fecha dentro de una semana a partir de la fecha de hoy:
El código usado en la propiedad de objetos[?] del menú desplegable es el siguiente:
ForAll(Sequence(7), Today() + Value)
FUNCIÓN TRACE
FUNCIÓN TRACE
La función TRACE envía telemetria (como información acerca del uso que se le está dando a la app) a Azure Application Insights, en donde desarrolladores pueden monitorear desempeño y errores de la aplicación.
Trace(
"Form Failed To Submit",
Trace.Severity.Error,
{
User: User().FullName,
Screen: App.ActiveScreen,
Time: Now()
}
)
Razones para usarla: Aun si no tienes planes de usar Azure Application Insights, TRACE aun nos es útil ya que su salida es visible en la herramienta de Power Apps Studio’s Monitor. Como desarrolladores, nos encontraremos muchas veces usando TRACE para ayudarnos a hacer debug cuando una variable esté regresando un valor inesperado.
Por ejemplo, si pongo este código en la propiedad OnSelect de un botón y le doy click obtendremos lo siguiente:
Set(varNumber, 1); Trace(«Number: «&varNumber);
Set(varNumber, varNumber + varNumber); Trace(«Number: «&varNumber);
Set(varNumber, varNumber + varNumber); Trace(«Number: «&varNumber);
Set(varNumber, varNumber + varNumber); Trace(«Number: «&varNumber);
La información de TRACE se mostraría dentro del monitor de la siguiente manera:
FUNCIÓN JSON
La función JSON convierte una tabla a una secuencia de texto en el formato JavaScript Object Notation (JSON).
El código para crear el JSON a partir de una colección es el siguiente:
JSON(colEmails, JSONFormat.IndentFour);
Razones para usarla: A veces queremos pasar una colección a Power Automate para usarla en un Flujo. Power Automate no puede aceptar una colección como una entrada. Por lo tanto, la convierto a un JSON y paso la secuencia de texto. Una vez dentro de Power Automate uso la función Parse JSON[?] para interpretar el objeto y así puedo hacer loop[?] sobre el resultado para desarrollar una acción por cada registro en mi colección original.
Por ejemplo, puedo enviar colEmails a Power Automate como un JSON de la siguiente manera:
'Collection to JSON: Send Emails'.Run(
JSON(colEmails, JSONFormat.IndentFour)
);
Después podemos analizar el JSON y enviar un email por separado por cada registro.
FUNCIÓN GUID
La función GUID crea un ‘identificador global único’ representado como una secuencia de texto hexadecimal. Los GUIDs son generados de manera aleatoria y aunque es técnicamente posible producir dos GUIDs parecidos, la probabilidad es tan baja que es básicamente cero. Esta es la razón por la cual muchas bases de datos usan GUIDs como claves primarias (como lo son las IDs únicas).
GUID()
Razones para usarla: Cuando trabajamos con colecciones estas seguido no tienen un identificador único. Si la colección tiene un registro duplicado se vuelve difícil decirle a Power Apps cuál queremos seleccionar para actualizaciones. Aquí tenemos un ejemplo que tiene dos registros para ‘Sebastian Vallejo’.
Nombre | Apellido |
---|---|
Sebastian | Vallejo |
Panchito | Vallejo |
Claudia | Oliver |
Ivan | Vallejo |
Sebastian | Vallejo |
Si añades un GUID ahora veras una forma de seguir el registro específico para el ‘Sebastian’ que quieres actualizar.
GUID | Nombre | Apellido |
---|---|---|
b6d65767-849e-4484-9f96-26b3e81e5489 | Sebastian | Vallejo |
e68ed2e7-04c7-4a45-b3f9-409dec5b2587 | Panchito | Vallejo |
e0dd3734-edc1-49ac-97d4-b57013af4b0a | Claudia | Oliver |
4d3a72b1-cb98-48c1-a0f3-18e8adae74a1 | Ivan | Vallejo |
81931a18-0922-4e66-9a34-9072ee83b1a7 | Sebastian | Vallejo |
Y así añades el GUID:
AddColumns(colNames, "GUID", GUID())
Aún quedan muchas funciones utiles en Power Apps, pero estas pueden ser un buen comienzo. Cualquier duda nos leemos abajo.