Miguel Escobar Publicada noviembre 3, 2019

Mantener (Seleccionar), Renombrar y Reordernar tus columnas con Power BI / Power Query

Power BI

Acabo de terminar de pasar de HubSpot a ActiveCampaign.

Si bien HubSpot parece ser una plataforma increíble para cualquiera en el análisis de datos, simplemente no fue rentable para mi negocio, sin mencionar que algunas de sus características parecen realmente limitadas hasta el punto en que ni siquiera las estaba usando.

La migración de HubSpot a ActiveCampaign no fue una tarea fácil, pero el equipo de ActiveCampaign tiene bastante experiencia en situaciones como la mía y parece que no he sido el único cliente que abandonó HubSpot por AC.

Se encargaron de la mayor parte de la migración, pero al final tuve que limpiar un poco mis listas, exportar las listas de contactos de HubSpot y luego cargarlas en ActiveCampaign. Tengo varias listas en inglés y español y coincidir con los nombres de las columnas en HubSpot y ActiveCampaign fue una pesadilla.

¡Solo echa un vistazo a esta exportación de HubSpot que tiene 272 columnas!

De esas 272 columnas,  realmente solo necesitaba 10. Pero aquí está el detalle, también tengo un montón de otras exportaciones de HubSpot que pueden tener de 80 a 300 columnas y siempre necesito solo 10 columnas específicas.

¡Aquí es donde Power Query viene al rescate!

Mis tareas: seleccionar / mantener y cambiar el nombre de las columnas

Mis tareas son simples:

  1. Necesito reducir el número de columnas a las que necesito específicamente
  2. Cambie el nombre de las columnas seleccionadas a los nombres que uso en ActiveCampaign para facilitar la importación

Esto suena bastante simple y tengo 2 opciones:

  1. Realiza manualmente estos pasos en Power Query seleccionando las columnas dentro de la consulta y luego cambia el nombre.
  2. Usa una mesa auxiliar para hacer las cosas un poco más flexibles en caso de que lo necesites

Voy con la opción 2. Comencemos. Puedes seguir descargando el archivo desde el siguiente botón:

Usar una tabla auxiliar para impulsar transformaciones

Creé la tabla de arriba donde verás 2 columnas:

  • KeepColumn: el nombre de la columna de la exportación original que me gustaría conservar
  • RenameTo: el nuevo nombre de la columna que quiero mantener

Paso 1: mantener columnas

Lo primero que debemos hacer es tener ambas tablas dentro del Editor de Power Query. Notarás que el archivo ya los tiene a ambos para simplificar el proceso, pero recuerda que puedes conectarte a casi cualquier fuente con Power Query.

Las consultas que tenemos como consultas de origen son:

  • HubSpotData: la exportación real desde HubSpot
  • HelperTable: la tabla que creé

Creé una consulta de referencia desde HubSpotData para crear una nueva consulta que estoy nombrando Salida («Output»).

Lo siguiente que haré es simplemente hacer clic derecho en cualquier columna de la tabla y presionar la opción «Remove Other Column»:

Mira cómo se ve el resultado de esta operación:

En la barra de fórmulas verás que utiliza una función con el nombre de Table.SelectColumns que requiere una tabla y luego una lista con los nombres de las columnas a mantener. Como solo quiero mantener una columna, solo tiene un nombre, pero puede tener tantos como desees.

Volvamos a la consulta HelperTable y creemos una referencia a partir de ella simplemente haciendo clic derecho y presionando el botón de Reference:

Aquí es donde las cosas se ponen muy interesantes. Cambiemos el nombre de esta nueva consulta a ColumnsToKeep.

Haz clic derecho en la columna KeepColumn y presione la opción Drill Down:

Esto extraerá la columna de la tabla y la transformará en una lista como se muestra a continuación:

Ahora, regresemos a la consulta Salida («Output») y reemplacemos el segundo argumento de la función Table.SelectColumns con el nombre de la consulta que acabamos de crear: ColumnsToKeep. Así es como se verá:

Ahora podemos pasar al paso 2, donde podremos cambiar el nombre de estas columnas.

Paso 2: renombrar columnas

Avancemos y cambiemos el nombre de cualquiera de las columnas dentro de esta consulta y veamos el resultado que nos muestra en la barra de fórmulas:

Observa que esta función (Table.RenameColumns) usa argumentos similares. Primero necesitas la Tabla (#»Removed Other Columns») y luego necesitas una lista de listas con valores emparejados, donde la primera es el nombre actual y el segundo valor es el nuevo nombre de la columna. Es por eso que vemos «Email» como la primera cadena de texto y «ok» como la segunda.

Similar a lo que hicimos antes, creemos una consulta de referencia a partir de la consulta HelperTable y nombremos a esta nueva consulta RenameColumns.

Ahora podemos seguir adelante y simplemente crear un paso personalizado haciendo clic en el ícono fx en la barra de fórmulas y usamos la siguiente fórmula:

= List.Zip( Table.ToColumns( Source ) )

La cual se debería ver así:

¿Qué hizo esta fórmula?

  1. Primero transformó la tabla en una lista de listas (usando Table.ToColumns)
  2. Y luego «comprimió» o emparejó los valores de esas listas en varias listas dentro de una lista (usando List.Zip)

Ahora podemos volver a la consulta Salida («Output») y reemplazar el segundo argumento de esa función Table.RenameColumns para que sea así:

= Table.RenameColumns(#»Removed Other Columns»,RenameColumns)

¡Y voilá! Tenemos nuestra solución lista

¿Cuándo deberías usar esto?

¡Siempre que sientas la necesidad de hacerlo!

Utilicé esto porque estaba volviendo y comprobando qué campos personalizados tenía y qué campos me faltaban, por lo que me fue más fácil cambiar los valores de la tabla auxiliar que ir al Editor de consultas y cambiarlos manualmente.

Se recomienda para la «exploración» o esta solución única en la que tuve que hacer una limpieza simple y usar el resultado para importarlo a otro sistema, pero si planeas publicar tu solución en el servicio Power BI, entonces es recomendable que definas explícitamente estas transformaciones en tu consulta de salida sin usar una tabla de Ayuda, solo seleccionando las columnas y luego renombrando manualmente cada columna ya que usar una columna auxiliar podría traer algunos problemas dependiendo de los niveles de privacidad de tus fuentes de datos y cómo planeas combinarlos

Fuera de eso, esto me ahorró tantas horas de trabajo en el pasado que tuve que compartirlo.

Consejo extra: re-ordenar tus columnas

¿Sabías que cuando intentas re-ordenar las columnas de tu tabla utilizas la función Table.Reorder Columns?

Similar a las funciones mostradas anteriormente, también necesitas una tabla como primer argumento y el segundo es una lista con los nombres de las columnas en el orden en que deberían aparecer.

Aquí puedes reemplazar ese segundo argumento como lo desees en el caso de que necesites que tu tabla de salida también tenga un orden o columnas en particular. Puedes usar una técnica similar a la que acabamos de hacer, un desglose simple sobre una columna y usar esa lista de nombres de columna.

Hay muchas otras funciones que trabajan de esta manera y una vez que comiences a comprender cómo funcionan las tablas y listas en Power Query, podrás aprovechar al máximo Power Query.

Power BI
Subscribe
Notify of
guest
10 Comentario
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
José Manuel Agundis

Gracias Miguel, que talento tiene usted. Voy a digerirlo poniendo en práctica. Saludos.

osiel

Genial Miguel, gracias por compartir.

Jose Manuel Agundis

Gracias por compartir esta maravillosa solución usando M. Saludos Miguel

Jesus

ok! y por qué cuando reordenamos columnas, si luego nos vamos al modelo de datos de tablas no nos cambia el orden de las mismas?

Esto me parece una liada bastante gorda por parte de pBI.. me ha pasado en varias ocasiones.

Paco

Fantástica solución, lástima no haberla conocido antes, se me ocurren decenas de proyectos donde lo debería haber aplicado. A partir de ahora será un paso imprescindible en todos mis proyectos.
Para rizar el rizo, va una pregunta. Habría alguna forma de también tener parametrizados en una tabla los tipos de datos de cada columna? Asi se haría tres cosas: eliminar columnas, reordenar y también poner el tipo de datos

Paco

Mi idea es poner el tipo en una tabla de Excel y que power query lo transforme en type. Intentaré darle una vuelto a ver si me sale

Teodoro Quiroz

Hola buenas tardes, espero me pueda ayudar, necesito realizar una tabla con los dìas de 0-30, 31-60, etc, espero me puedan ayudar a realizarlo ya que quiero llenar eso para poder llenar los datos