Hace tiempo publiqué un artículo similar donde con un método alternativo conseguíamos insertar filas en una tabla, con valores controlados.
Aquel método consistía en generar un registro de valores nulos, para luego combinarlo con otro registro de valores determinados.
Hoy veremos una alternativa para, primero, generar un registro de nulos, y, añadirlos después de cada agrupación de filas por Categoría (uno de los campos de la tabla).
Digamos que pretendemos tener 'separados' cada grupo de Categoría.
Como siempre, el primer paso consistirá en Cargar la tabla de datos 'Tabla1' al Editor de Power Query, donde modificaremos la consulta hasta que nos quede con el siguiente código:
La línea de la consulta creada es:
- listar y contar el nombre y número de columnas en la tabla origen.
- fabricar un registro de nulos, en esta ocasión con la función List.Generate
- agrupar por la columna deseada, de 'Categoría', que nos permite juntar todos las filas de la misma categoria en un solo 'paquete'
- a cada agrupación resultante, con la función Table.InsertRows añadimos el registro de valores nulos recién creado.
- Finalmente eliminaremos campos sobrantes y expandiremos las nuevas tablas, ya con la nueva fila de nulos.!!
La diferencia de métodos para lograr esos registros nulos nos abre la puerta a nuevas alternativas.
El primer método:
Una forma muy simple y directa (e imaginativa, diría yo) de lograr esos nulos...
Frente al más ortodoxo método con List.Generate:
donde se hace necesario un control de incremento y salida hasta completar las columnas necesarias con valores Null.
Siempre me ha parecido interesante tener opciones frente a un mismo problema ;-)
Aquel método consistía en generar un registro de valores nulos, para luego combinarlo con otro registro de valores determinados.
Hoy veremos una alternativa para, primero, generar un registro de nulos, y, añadirlos después de cada agrupación de filas por Categoría (uno de los campos de la tabla).
Digamos que pretendemos tener 'separados' cada grupo de Categoría.
Como siempre, el primer paso consistirá en Cargar la tabla de datos 'Tabla1' al Editor de Power Query, donde modificaremos la consulta hasta que nos quede con el siguiente código:
let Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content], //Obtenemos el listado de nombres de columnas NombresCols=Table.ColumnNames(Origen), //y su recuento NumCols=List.Count(NombresCols), //Creamos el registro de nulos Registro_NULO= Record.FromList( List.Generate( () => [x = null, y = 1], each [y] <= NumCols, each [x = null, y=[y]+1 ], each [x]), NombresCols), //Agrupamos por Campo1 para poder segregar las distintas Categorias Agrupo_Categoria = Table.Group(Origen, {"Categoría"}, {{"CAMPOS_GROUPPED", each _, type table }}), //Inserto un registro al final de cada agrupación Añado_RegistroNulos = Table.AddColumn(Agrupo_Categoria, "AddRecordNull", each Table.InsertRows([CAMPOS_GROUPPED], Table.RowCount([CAMPOS_GROUPPED]), {Registro_NULO})), OtrasColumnasQuitadas = Table.SelectColumns(Añado_RegistroNulos,{"AddRecordNull"}), Expandimos = Table.ExpandTableColumn(OtrasColumnasQuitadas, "AddRecordNull", NombresCols, NombresCols) in Expandimos
La línea de la consulta creada es:
- listar y contar el nombre y número de columnas en la tabla origen.
- fabricar un registro de nulos, en esta ocasión con la función List.Generate
- agrupar por la columna deseada, de 'Categoría', que nos permite juntar todos las filas de la misma categoria en un solo 'paquete'
- a cada agrupación resultante, con la función Table.InsertRows añadimos el registro de valores nulos recién creado.
- Finalmente eliminaremos campos sobrantes y expandiremos las nuevas tablas, ya con la nueva fila de nulos.!!
La diferencia de métodos para lograr esos registros nulos nos abre la puerta a nuevas alternativas.
El primer método:
Record.FromList(List.Repeat({""},Table.ColumnCount(TipoCambiado)),Table.ColumnNames(TipoCambiado)
Una forma muy simple y directa (e imaginativa, diría yo) de lograr esos nulos...
Frente al más ortodoxo método con List.Generate:
Record.FromList( List.Generate( () => [x = null, y = 1], each [y] <= NumCols, each [x = null, y=[y]+1 ], each [x]), NombresCols)
donde se hace necesario un control de incremento y salida hasta completar las columnas necesarias con valores Null.
Siempre me ha parecido interesante tener opciones frente a un mismo problema ;-)
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.