Hoy un pequeño truco para concatenar las distintas columnas de nuestra consulta siempre que tengan algún dato.
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:
Después de cargar la Tabla al editor de Power Query pasaremos al editor Avanzado y escribiremos:
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!
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:
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.