miércoles, 2 de febrero de 2022

Power Query: Concatenar columnas

Hoy un pequeño truco para concatenar las distintas columnas de nuestra consulta siempre que tengan algún dato.
Power Query: Concatenar columnas


Una de las claves en este truco será transformar los distintos valores de los campos obtenidos con Record.FieldValues.
La función List.Transform nos permitirá aplicar una conversión a Texto (con Text.From) a cada elemento del Registro obtenido... evitando errores no deseados.
Text.Combine será la función encargada de concatenar los textos resultantes (a semejanza de la función CONCAT, CONCATENAR o UNIRCADENAS).

Si partimos de la siguiente Tabla con algunas celdas sin datos:
Power Query: Concatenar columnas

Después de cargar la Tabla al editor de Power Query pasaremos al editor Avanzado y escribiremos:
let
    Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content],
    TipoCambiado = Table.TransformColumnTypes(Origen,{{"Fecha", type date}, {"País", type text}, {"Comercial", type text}, {"Producto", type text}, {"Unidades", Int64.Type}}),

    //OPCIÓN 1 - indicando manualmente los campos...
    Concatenado1=Table.AddColumn(TipoCambiado,
                "Prueba_Concatena1", 
                 each Text.Combine({Text.From([Fecha]),[País],[Comercial],[Producto],Text.From([Unidades])},"|")),
    
    //OPCIÓN 2 - automatizando las referencias a los campos... sean los que sean!!
     Concatenado2=Table.AddColumn(TipoCambiado,
                "Prueba_Concatena2", 
                 each Text.Combine(List.Transform(Record.FieldValues(_), Text.From),"|"))
in
    Concatenado2


Vemos la similitud entre las dos opciones... con la ventaja del segundo frente al primero, ya que la OPCIÓN 2 no requiere de nombrar las distintas columnas... lo que nos evitará fallos de programación si hubiera cambios en los nombres de las columnas...

Un detalle adicional que no debemos pasar por alto es que las celdas vacías no las concatena!!.
MUY INTERESANTE!

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.