Power Query vs Power Pivot – Transformar columnas

Anteriormente, en esta serie, vimos Power Query vs Power Pivot – Importar datos

Hay muchas diferencias en las transformaciones que se realizan con una y otra herramienta. Hoy lo que quiero mostrar es las diferencias que existen en cuanto a eliminar y renombrar columnas si trabajamos con Power Query y con Power Pivot.

Transformaciones con Power Query

Cada vez que realizamos una transformación sobre una tabla, columnas o filas en Power Query lo que hacemos en realidad es crear pasos en la definición de la consulta que se realiza al servidor donde se encuentran alojados los datos.

  • Renombrar columnas

Para renombrar columnas podemos aprovechar la opción del menú contextual Cambiar nombre, disponible desde la cabecera de la columna que queremos cambiar.

clicderpq

Además, podemos utilizar el comando Cambiar Nombre del menú Inicio, grupo de opciones Administrar columnas.

admcolpq

Y como tercera y más sencilla opción, hacer doble clic sobre la cabecera de columna y escribir el nuevo nombre que se desea.

renombrarpq

En cualquier caso, se crea un nuevo paso para la consulta, escrito en Código M, que refleja el cambio.

codigomrenom

El nombre de la columna en el origen de datos no lo volveremos a ver, no estará disponible en lo adelante, a menos, claro, que eliminemos el paso.

  • Eliminar columnas

Para eliminar columnas tenemos también múltiples opciones, en este caso, hay cuatro.

Desde el menú contextual, al que accedemos desde la cabecera de una de las columnas seleccionadas, opción Quitar columnas. Tener en cuenta que Power Query nos ofrece la posibilidad de hacer cualquiera de las acciones, según convenga, eliminar las seleccionadas o eliminar el resto de columnas y quedarnos solo con las seleccionadas.

quitarcolmenu

En el menú Inicio, grupo de opciones Administrar columnas, tenemos las mismas opciones

quitarcolmenu2

Y además, en este mismo grupo, tenemos la opción de Elegir columnas, es decir, seleccionar cómodamente de la lista de todas disponibles, las que deseamos conservar y las que no.

elegirtodascol

Y, para finalizar, con las columnas seleccionadas, que siempre serán las que aparecen resaltadas en color verde, Suprimir desde el teclado.

Aplicando cualquiera de los métodos, se crea un nuevo paso para la consulta, escrito en Código M, que refleja el cambio.

codmquitarcol

Una vez eliminadas las columnas, veamos si las podemos recuperar. Pongámonos en el supuesto de que nos hemos equivocado y no queríamos eliminar la columna ShipDateKey, podemos estar tentados a volver a seleccionar del menú Inicio, grupo de opciones Administrar columnas, el comando Elegir columnas.

elegiralgcol

No aparecen las columnas que han sido eliminadas. Podemos ver que se crea un paso Table.SelectColumn que recibe como primer parámetro el conjunto de datos devuelto por el paso anterior. Es decir, no se pueden recuperar a menos que deshagamos el paso que las elimina.

Recordemos que si el paso que eliminamos es el último, no es tan complicado; pero si hay varios pasos a continuación, podemos deshacer mucho trabajo y eso puede no ser adecuado. No todo está perdido claro, hay otra posibilidad y es que nos vayamos al trozo de código M, que está para eso y hagamos el cambio allí. Eso sí, con mucho cuidado 🙂

Este trozo de código, que es donde se eliminan las dos columnas

#"Columnas quitadas1" = Table.RemoveColumns(#"Columnas con nombre cambiado",
  {"DueDateKey", "ShipDateKey"})

Lo debemos cambiar por este, que elimina sólo una columna

#"Columnas quitadas1" = Table.RemoveColumns(#"Columnas con nombre cambiado",
  {"DueDateKey"})

Aquí, para los más curiosos, como siempre el código M

let
 Origen = Sql.Databases("VM-SQL12"),
 AdventureWorksDW2012 = Origen{[Name="AdventureWorksDW2012"]}[Data],
 dbo_FactInternetSales = AdventureWorksDW2012{[Schema="dbo",
   Item="FactInternetSales"]}[Data],
 #"Columnas quitadas" = Table.RemoveColumns(dbo_FactInternetSales,
   {"DimCurrency", "DimCustomer", "DimDate(DueDateKey)", "DimDate(OrderDateKey)",
   "DimDate(ShipDateKey)", "DimProduct", "DimPromotion", "DimSalesTerritory", 
   "FactInternetSalesReason"}),
 #"Columnas con nombre cambiado" = Table.RenameColumns(#"Columnas quitadas",
   {{"ProductKey", "IdProducto"}}),
 #"Columnas quitadas1" = Table.RemoveColumns(#"Columnas con nombre cambiado",
   {"DueDateKey", "ShipDateKey"})
in
 #"Columnas quitadas1"

Fijaros que tenemos dos veces la transformación Quitar tablas. Esto se debe a que dado que Power Query se trae como columnas las tablas relacionadas, el primer paso ha sido eliminarlas para partir del mismo conjunto de columnas que en Power Pivot.

Transformaciones con Power Pivot

En los ejemplos anteriores he estado importando la tabla FactInternetSales de la Base de datos AdventureWorksDW12

Hasta ahora estuvimos importando los datos tal cual estaban en la tabla, todas las filas y todas las columnas. No es óptimo, si analizamos las Propiedades de tabla desde la ficha Diseño del Modelo de datos de Power Pivot,veremos que la consulta actual es SELECT * a la tabla

selecttodos

  • Eliminar columnas filtrando desde el Asistente

Varias veces he comentado en esta serie que desde el Asistente para importación de tablas podemos filtrar por filas y/o columnas. Siguiendo las funcionalidades que estamos comparando hoy veremos que filtrar columnas viene siendo lo mismo que eliminar columnas.

Recordemos, en el Asistente para importación decidimos si vamos a seleccionar las tablas y/o vistas de la lista o si por el contrario, vamos a escribir la consulta. En nuestro caso, vamos a seleccionar de la lista.

seleccionartablasoconsulta

Marcamos la casilla junto a la tabla que vamos a analizar y a continuación el botón Vista previa y filtro.

botonvistayfiltro

Este botón nos muestra las columnas de la tabla con la opción de filtrar por filas, aplicando filtro sobre el botón en la esquina superior derecha de cada columna, tal y como si de una tabla de Excel se tratase.

vistaprevia

Para filtrar por columnas basta con desmarcar la casilla que se encuentra en la esquina superior izquierda de cada columna, tal y como hemos hecho para un par de columnas de la tabla, como muestra la siguiente imagen.

filtracols

Una vez hemos aplicado algún filtro al menos sobre una columna se muestra un hipervínculo  en la misma fila donde se encuentra la tabla que ha sido filtrada.

enlacefiltros

Cuando seleccionamos el hipervínculo, lo que tenemos es la lista de las columnas que han sido seleccionadas, las que no hemos desmarcado, todas separadas por comas, en forma de mensaje que no responde a lenguaje de consulta alguno.

importahechos

Importamos los datos, obteniendo la misma cantidad de registros que otras veces, ya que no filtramos por filas.

Una vez finalizado el Asistente para tablas, tenemos la tabla con las columnas seleccionadas y si nos vamos a Propiedades de tabla, vemos que ahora sí la sentencia T-SQL refleja la lista de las columnas que integran el conjunto de datos a traer del servidor y no un SELECT * como antes.

selectcols

En Power Query no tenemos un Asistente para importación de tablas y se puede entender la diferencia. Con Power Query, creamos la consulta, la definimos a través de pasos. Pues bien, con el Asistente para tablas de Power Pivot, lo que hemos hecho es definir la consulta, definir la lista de tablas y el origen de datos de donde vamos a extraer nuestros datos. Más adelante, regresaremos a esta ventana Propiedades de tabla.

  • Renombrar columnas

Desde Power Pivot también podemos renombrar las columnas del modelo, tenemos la opción habilitada en el menú contextual de la cabecera de la columna.

cambianompp

Y tenemos el dobleclic sobre la cabecera de la columna.

dobleclicpp cambiadopp

No hay nada en el menú que podamos utilizar para renombrar columnas.

Veamos ahora la implicación que tiene renombrar una columna. Vamos a Propiedades de tabla. Power Pivot nos permite ver los nombres de columnas de origen.

nombreorigen

O ver los nombres de columnas del modelo

nombremodelo

Esta funcionalidad es muy conveniente ya que no perdemos nunca el vínculo con el origen de datos, que puede ser muy significativo para quien está desarrollando el modelo. Los nombres de las columnas del modelo están pensados en el usuario final, mientras los nombres del origen, son con más probabilidad los nombres que manejan los administradores de bases de datos y usuarios puramente IT.

En cualquier caso, en la consulta al origen de datos el nombre sigue siendo el del origen.

nombreorigenselect

A menos que lo cambiemos directamente en la consulta TSQL.

cambianombreconsulta

  •  Recuperar columnas

Tanto si queremos recuperar columnas que han sido eliminadas, como si queremos eliminar otras, regresamos a Propiedades de tabla desde la ficha Diseñar. La vista previa nos ofrece las mismas posibilidades que el Asistente para importar tablas, es tan sencillo como seleccionar o no las columnas, de esta forma, eliminamos o recuperamos columnas, sencillo.

Recuperarcols

Las columnas desmarcadas ya no están en la consulta, en este caso DueDateKey ni ShipDateKey.

selecteliminadas

Recuperamos la columna ShipDateKey,

recuperafecha

Y también se recupera en la consulta.

selectrecuperafechas

  • Ocultar columnas

Power Pivot ofrece una funcionalidad adicional, se trata de ocultar columnas al modelo de datos que se visualizará en la herramienta cliente. ¿De qué se trata? Pues a partir del modelo tabular que creamos con Power Pivot, podemos explotarlo con tablas y gráficos dinámicos, Power View y Power Map. Dedicaré una entrada de esta serie a ver cómo podemos explotar el modelo de datos, por cierto que desde Power Query no podemos llegar a nada de esto, normal, no crea modelos, apenas define la consulta.

Entonces, en un modelo de datos tenemos tres tipos de columnas:

  • columnas que vamos a visualizar,
  • columnas que no vamos a visualizar; pero que necesitamos porque garantizan la relación entre tablas o son el origen para crear expresiones DAX que se empleen en otras columnas o medidas del modelo, podemos hablar de columnas temporales, estas son las columnas que vamos a ocultar
  • columnas que están en el origen de datos y no necesitamos del todo, estas las vamos a eliminar

Para ocultar columnas desde el menú contextual activado en la cabecera de las columnas a ocultar, la opción Ocultar en herramientas cliente, como muestra la imagen.

ocultarclicder

O desde la vista diagrama, menú contextual en las columnas a ocultar.

ocultarclicdergraf

Las columnas ocultas en la herramienta cliente, también se pueden ocultar en el modelo. Su visibilidad dependerá de si está seleccionado el botón Mostrar oculto del grupo Ver del menú Inicio del Modelo de datos.

Si no está seleccionado, se ven los ocultos

factintocultosvis comandomostrado

listaocultoscomandosmostrar

Si quitamos la selección de este botón, no se verán los ocultos.

comandonomostrargrafnovislistaocultosocultos

  • Seleccionar oculto

La ventana Propiedades de tabla no nos ofrece ninguna información sobre las columnas ocultas. Entiendo que es correcto ya que la columna viene del origen de datos, la utilizamos para relacionar o como auxiliar y por eso permanece en la consulta. Esta columna no se mostrará en las aplicaciones clientes.

En la próxima entrada veremos cómo consumir el modelo de datos desde las aplicaciones cliente con MS Office Excel 2013.

No te pierdas el resto de entradas de la serie Power Query vs Power Pivot

 

 

 

 

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.