jueves, 6 de octubre de 2022

Power Query: Añadir filas vacías

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).
Power Query: Añadir filas vacías

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

Power Query: Añadir filas vacías


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.