Este escenario se ocupa de las exportaciones de datos sin procesar que hacen que los datos se derramen en un número desconocido de columnas adyacentes. Cuando observa el ejemplo, puede ver que la descripción se ha extendido a la Columna 4 y la Descripción 2 se ha dividido en dos columnas adyacentes. Pero ese no será siempre el caso. En el próximo ciclo, este número de columnas podría cambiar.
Antes de saltar a la solución, examinemos el código M que Power Query genera cuando fusiona columnas.
Hay un par de formas de fusionar columnas. Una es seleccionar la columna de descripción y presionar la tecla Mayús o la tecla de control y luego seleccionar la columna 4 también. Luego, haga clic con el botón derecho y elija Fusionar columnas .
O bien, en la pestaña Transformar , seleccione fusionar columnas . Y aparecerá este cuadro de diálogo, que le permite seleccionar el Separador.
En el cuadro emergente, seleccione Tabulador y podrá ingresar un nuevo nombre de columna. En este caso, lo nombré Descripción.
En la barra de fórmulas, vemos el código M que ha creado este paso de transformación.
Si la barra de fórmulas no está visible en su pantalla, vaya a la pestaña Ver y actívela.
Entonces, la función que usa Power Query para fusionar columnas es Table.CombinedColumns . El primer parámetro que toma es una tabla. Esa tabla es devuelta por el paso anterior en nuestro código, por lo que en los Pasos aplicados, verá que esto se llama Source .
Luego, codificó los nombres de las columnas en una lista. Aquí ve los inicializadores de la lista, y entre los valores en el texto, la descripción del nombre de la columna y la columna 4 del nombre de la columna. Luego, llama a otra función M para combinar los valores de texto en esas columnas.
Y finalmente, pasa el nombre de la nueva columna como texto para que podamos ajustarlo.
Entonces, si queremos que esta función fusione dinámicamente un número cambiante de columnas, tendremos que cambiar ese segundo valor de parámetro que ahora contiene una lista de nombres de columna codificados.
Fusionar un número cambiante de columnas en una tabla de Power Query
Volveré a mi consulta de datos sin procesar, y si observamos más de cerca los nombres de las columnas, vemos que cada una de las columnas de derrame es anónima. No tienen nombres propios, pero todos comienzan con la columna de texto, seguida de un número. Veamos si podemos usar eso. Primero, crearé una referencia haciendo clic derecho aquí y seleccionando Referencia .
Y para obtener los nombres de las columnas dentro de la barra de fórmulas, puedo agregar Table.ColumnNames . Esta función devuelve una lista con todos los nombres de columna de esa tabla. Volvamos a convertir esto en una tabla haciendo clic en A la tabla .
En este cuadro emergente, haga clic en Aceptar.
Luego, en la pestaña Agregar columna , seleccionaré Formato y luego Recortar .
Así que dentro de la barra de fórmulas, en lugar de Text.Trim , podemos decir si Text.StartsWith , y luego apuntarlo a nuestra Columna 1 , y lo copiaré de inmediato. Quiere ese texto que estamos buscando, así que será Columna. Entonces, si comienza con una columna de texto, entonces queremos "nulo"; para todo lo demás, queremos lo que esté en la Columna 1. También podemos cambiar el nombre de esa columna, así que dentro de la barra de fórmulas, en lugar de Trim, llamémoslo GroupColumn .
Ahora, todo lo que tenemos que hacer es llenarlos con estos valores. Así que haré clic con el botón derecho en mi encabezado, seleccionaré Rellenar y Abajo .
Entonces, la próxima vez que ingresen datos y esa cantidad de columnas haya cambiado, este grupo los recogerá automáticamente.
Cambiemos el nombre de esta consulta, lo llamaré grupos de columnas.
Asegurémonos de que su carga se haya deshabilitado porque esta es solo una consulta de soporte.
Puedo hacer referencia a esta consulta de apoyo y le cambiaré el nombre más adelante. Dejemos eso por ahora. Entonces, si recuerda, comenzamos fusionando dos columnas y eso creó una lista codificada con los nombres de las columnas , pero ahora podemos filtrar por Descripción en nuestro GroupColumn .
Entonces, si hacemos ese filtro en la Descripción dentro de la Columna 1, obtenemos las columnas que cumplen con ese criterio.
Sin embargo, esta es una tabla y no una lista. Necesitamos extraer lo que quede en esa primera columna porque necesitamos incluir esas columnas en nuestra operación de combinación. Entonces, para hacer eso, podemos hacer clic con el botón derecho en el encabezado de la Columna 1 y seleccionar Profundizar .
Y ahora tenemos una lista. Así que démosle a esta consulta un nombre propio ( ListDescr ) y verifiquemos si está deshabilitada de la carga.
Ahora podemos retroceder a nuestra consulta de resultados y reemplazar ese segundo argumento aquí con nuestra lista dinámica. Así que aquí, podemos hacer referencia a nuestro ListDescr .
Repitamos esto también para la Descripción 2. Iré a mi consulta ColumnGroups. Crearé otra referencia y seleccionaré las columnas que necesito. Luego filtraré la Descripción 2, que devolverá estas tres columnas. Haré clic con el botón derecho en mi encabezado y seleccionaré Drill Down y cambiaré el nombre de esta consulta también ( ListDescr2 ).
Luego regresaré a mi consulta de resultados, seleccionaré la columna Descripción2 y presionaré Mayús o control para seleccionar también la siguiente columna (columna2). Haré clic con el botón derecho en el encabezado y elegiré Fusionar columnas .
En el cuadro emergente, elegiré Tabulador como Separador y lo llamaré Descripción2.
Solo cambiaré el nombre de la columna aquí en la barra de fórmulas. También cambiaré esa lista codificada de la lista que acabamos de crear. Y ahora, como puede ver, esto también ha recogido la columna 8 que excluimos anteriormente.
En este blog, le mostré cómo usar códigos M en Power Query para fusionar columnas dinámicamente. No es difícil siempre y cuando esté familiarizado con el funcionamiento de Power Query y qué códigos M usar.
Espero que hayas disfrutado este. Consulte los enlaces a continuación para obtener más contenido relacionado.