Devuelve una lista aplicando una funcion de transformación.
Sintaxis
List.Transform(list as list, transform as function) as list
El primer argumento es list, que es la lista con la que trabajar, el siguiente argumento es transform, que es la funcion a usar.
Creamos una consulta en blanco.
En la barra de fórmulas, ponemos List.Transform, abrimos paréntesis, abrimos llaves, ponemos el numero 1, dos puntos, ponemos el numero 7, cerramos llaves, coma, como argumento transform, ponemos la palabra each, guion bajo, que quiere decir, cada elemento, cerramos paréntesis.
= List.Transform({1..7}, each _)
Tenemos una lista desde el número 1 al número 7.
Después del guion bajo, multiplicamos por 2.
= List.Transform({1..7}, each _*2)
Cada valor de la lista será multiplicado por 2.
Si como argumento transform, ponemos Number.IsEven, nos va a devolver FALSE donde el numero no es par, y, TRUE donde el número es par.
Antes de Number.IsEven, usamos IF, la pregunta es Number.IsEven, si hay coincidencia debe de poner Par, y, si no la hay, debe de poner Impar.
= List.Transform({1..7}, each if Number.IsEven(_) then "Par" else "Impar")
Donde el valor es par, aparece Par, en caso contrario, pone Impar.
Si cambio Par por guion bajo, nos devuelve los valores pares.
= List.Transform({1..7}, each if Number.IsEven(_) then _ else "Impar")
Ahora, tenemos una serie de fechas.
Vamos a la barra de fórmulas, borramos lo que hay, ponemos la funcion List.Positions, que nos devuelve la posición de cada elemento, solo tienen un argumento que es lista, pues ponemos Origen[Fechas], que nos devolverá una lista.
= List.Positions(Origen[Fechas])
Volvemos a la barra de fórmulas, después del signo igual, ponemos List.Transform, abrimos paréntesis, abrimos llaves, ponemos el numero 1, dos puntos, usamos la funcion List.Count, como argumento es la funcion List.Positions, cerramos paréntesis, cerramos llaves, ponemos coma, como argumento transform, ponemos each, usamos la funcion #date, como argumento año, ponemos 2024, como argumento mes, ponemos guion bajo, como argumento día, ponemos 1, cerramos paréntesis.
= List.Transform({1..List.Count(List.Positions(#"Tipo cambiado"[Fechas]))}, each #date(2024,_,1))
Tenemos el primer día de cada mes.
Antes de #date, ponemos la funcion Date.EndOfMonth para que nos devuelva el último día del mes de cada fecha.
= List.Transform({1..List.Count(List.Positions(#"Tipo cambiado"[Fechas]))}, each Date.EndOfMonth(#date(2024,_,1)))
Creamos otra consulta en blanco, vamos a la barra de fórmulas, ponemos la funcion List.Transform, abrimos paréntesis, como argumento lista, ponemos {1..10}, nos va a crear una lista desde el numero 1 al número 10, coma, como argumento transform, ponemos each y guion bajo.
Vamos a obtener cada valor.
= List.Transform({1..10}, each _)
Añadimos un nuevo paso, usamos la funcion List.Positions, como argumento ponemos el paso Origen, vamos a obtener la posición de cada elemento en base 0.
= List.Positions(Origen)
¿Qué queremos?
Vamos a crear un acumulado.
Añadimos un nuevo paso, ponemos la funcion List.Transform, como argumento lista, es el paso que aparece, como argumento transform, ponemos each ponemos la funcion List.FirstN, como argumento lista, ponemos el paso Origen, como argumento countOrCondition, ponemos guion bajo, y, sumamos 1, cerramos paréntesis.
= List.Transform(Personalizado1, each List.FirstN(Origen, _+1))
Obtenemos una lista en cada fila, si hacemos clic en la primera fila aparece el primer valor, si hacemos clic en la segunda fila, aparece el primer y segundo valor, en la tercera fila, aparece el primer, segundo, y, tercer valor, así con el resto de las filas.
Antes de List.FirstN, ponemos la funcion List.Sum.
= List.Transform(Personalizado1, each List.Sum(List.FirstN(Origen, _+1)))
Ya tenemos nuestro acumulado.
Miguel Angel Franco Garcia
Comments