Hoy veremos una forma sencilla de anexar tablas, a nuestra elección, desde una lista dada:
Optaremos por dos métodos:
List.Transform o List.Generate
pero en ambos casos necesitaremos emplear las funciones descritas en esto otro post del blog:
Expression.Evaluate y Expression.Identifier
Comenzaremos nuestro ejercicio cargando todas las tablas fuente: 'ene', 'feb', 'mar', 'abr', 'may' y 'jun'
y de igual forma la Tabla 'Meses_Anexar' que contendrá, ad hoc, el listado de meses que nos interesa recuperar...
Cargaremos todas ellas en modo solo conexión.
Ya desde el editor de Power Query crearemos una consulta en blanco donde insertaremos el siguiente código:
Como vemos un método muy simple y efectivo...
Una alternativa (de entre muchas) sería emplear List.Generate (ver aquí).
De igual forma que antes, con todas las tablas ya cargadas, crearemos una nueva consulta en blanco donde escribiremos:
Un buen ejercicio de repaso de esta interesante función...
Con cualquiera de los dos métodos expuestos conseguimos nuestro objetivo: dinamizar el anexado de diferentes tablas a partir de un lista personalizable.
Optaremos por dos métodos:
List.Transform o List.Generate
pero en ambos casos necesitaremos emplear las funciones descritas en esto otro post del blog:
Expression.Evaluate y Expression.Identifier
Comenzaremos nuestro ejercicio cargando todas las tablas fuente: 'ene', 'feb', 'mar', 'abr', 'may' y 'jun'
y de igual forma la Tabla 'Meses_Anexar' que contendrá, ad hoc, el listado de meses que nos interesa recuperar...
Cargaremos todas ellas en modo solo conexión.
Ya desde el editor de Power Query crearemos una consulta en blanco donde insertaremos el siguiente código:
let // Table.ToList(table as table, optional combiner as nullable function) as list //convertimos en lista nuestra tabla, ya que lo necesitamos en ese tipo de datos para la siguiente transformación Meses=Table.ToList(Meses_Anexar), // List.Transform(list as list, transform as function) as list //evaluamos y transformamos cada elemento de la lista (cada tabla) // Expression.Evaluate se encarga de entender los textos de la lista como lo que son: Tablas Lista_Tablas=List.Transform(Meses, each Expression.Evaluate( Expression.Identifier(_),#shared)), // Table.Combine(tables as list, optional columns as any) as table // Combinamos las ya transformadas Tablas resultado=Table.Combine(Lista_Tablas) in resultado
Como vemos un método muy simple y efectivo...
Una alternativa (de entre muchas) sería emplear List.Generate (ver aquí).
De igual forma que antes, con todas las tablas ya cargadas, crearemos una nueva consulta en blanco donde escribiremos:
let // Table.ToList(table as table, optional combiner as nullable function) as list // pasamos a tipo Lista nuestra tabla de meses a anexar Meses=Table.ToList(Meses_Anexar), // List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list // generamos una Lista de Tablas... Lista_Tablas = List.Generate( () => [i=-1, tabla=#table({"Mes","Importe"},{})], // punto de partida: Dos variables definidas en un Registro each [i] < List.Count(Meses), // condición - control de salida!!! each [i=[i]+1, tabla=Expression.Evaluate( Expression.Identifier(Meses{i}),#shared)], // siguiente valor. Nuevo Registro each [tabla] // el Selector determina que valor a devolver ), // Table.Combine(tables as list, optional columns as any) as table //componemos una Tabla a partir de los Registros generados con List.Generate resultado=Table.Combine(Lista_Tablas) in resultado
Un buen ejercicio de repaso de esta interesante función...
Con cualquiera de los dos métodos expuestos conseguimos nuestro objetivo: dinamizar el anexado de diferentes tablas a partir de un lista personalizable.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.