¡Jueves de post! Hace ya un par de semanas lancé mi segunda encuesta en LinkedIn para ver qué temas os gustaría que fuesen los siguientes. Bien, pues el resultado ha sido el siguiente:

 
 

El ganador ha sido “Datamart: Caso práctico de uso”. Pues bien, como os podéis imaginar el post de hoy trata sobre la nueva versión de Power BI… que no, tocan los datamart J.

Lo primero que nos preguntamos, ¿qué es un datamart? Un datamart es una versión específica del almacén de datos centrados (DWH) en un área de negocio de una empresa u organización. Son subconjuntos de datos con el propósito de ayudar a que un área específica del negocio pueda auto servirse de datos y la consiguiente mejora en la toma de decisiones.

Ahora me diréis “Javi, creo que los datamart no son para mí, no trabajo en una gran empresa, trabajo con Power BI para hacer mis informes y además no tengo grandes conocimientos de BDD”. Bien, sigue leyendo, ya que con Power BI Datamart tienes la capa de ETL con los dataflows, el almacenamiento de los datos con Azure SQL Database, el clásico dataset y el informe. Todo con la misma interfaz de usuario en el servicio de Power BI. ¿Aún sigues pensando que no es para ti? Quédate hasta el final y veremos J

Vamos a suponer que estamos en la situación anterior, y somos nosotros y Power BI contra el mundo y el departamento de IT nos da acceso una base de datos, pero sólo acceso de lectura (estos de IT que desconfiados que son con nosotros…) y no podemos crearnos nuestras tablas haciendo nuestros joins, ni nuestras vistas… ¿Qué hacemos en ese caso? Pues nos vamos al servicio de Power BI y nos vamos a crearnos nuestro datamart.

Para ello, vamos al servicio de Power BI y nos creamos un área de trabajo:

 

En la parte derecha de la pantalla, se nos ha abierto rellenamos el nombre del área de trabajo, cargamos una foto si queremos y le damos avanzado:

 
 

Y bajamos el scroll hasta el punto donde seleccionamos el tipo de licencia a usar, que como sabéis, los datamart de momentos estan disponibles para PPU en adelante.

 
 

A continuación, le damos a guardar y se nos creará el área de trabajo. Para comprobar que el área es PPU, basta con mirar el nombre del área de trabajo y observar que tiene un diamante como el siguiente: 

 
 
Bien, ahora vamos a empezar a crear el datamart, para ello, hacemos click sobre Nuevo à Datamart 
 
 

Una vez hecho click sobre la opción Datamart, se nos creará el espacio, pero tardará unos cuantos segundos (entre 10 y 20 segundos). Una vez transcurrido ese tiempo, se nos quedará la siguiente pantalla:

 
 
 

De momento tenemos todo en blanco ya que aún no hemos añadido datos, pero algo que ya me está gustando es la parte de la izquierda donde indica:


* Tables
* Queries

Ahora necesitamos subir los datos al datamart para poder hacer nuestro modelo y posterior informe, para ello hacemos click sobre obtener datos:

 
 

 Y se nos abre…. ¡Power Query y sus muchos conectores! 


 
 

Aquí, os recomiendo como buena práctica, crear parámetros de consulta para conectarnos a los orígenes de los datos. Por varios motivos:

  1. En caso de actualización es mucho más rápido.
  2. Está todo mucho más estructurado en Power Query.
  3. En caso de reutilización, no tenemos que volver a escribirlo.

Para ello, seleccionamos el conector de Consulta en blanco y en la ventana que se nos ha desplegado, le damos a siguiente:

 
 Y se nos abre nuestra ventana de Power Query Online:

 

Ahora hacemos click sobre la parte de consultas y seleccionamos Nuevo Parámetro:

 
 
 

Y en la pantalla que se nos ha abierto, rellenamos los campos de Nombre con el nombre que queremos darle al parámetro y el Valor actual, con el nombre del servidor:

 
 Hacemos lo mismo para la base de datos y obtenemos lo siguiente:
 
 
 

A modo recomendación, a mí me gusta tener el panel de las consultas ordenado y para ello agrupo los elementos del mismo tipo dentro de carpetas. Para ello creamos grupos de carpeta para las bases de datos como para los servidores y arrastramos los parámetros a dichas carpetas tal que así:

 

 
 

La consulta en blanco creada para acceder a Power Query Online la podemos eliminar. Y el resultado final es:

 
 

Nota: Como podéis observar el texto tanto del parámetro de la base de datos como el del servidor están en cursiva, eso significa que no se va a cargar al modelo.


Bien, vamos a proceder ahora a cargar los datos de nuestro servidor al datamart, para ello seleccionamos Obtener Datos. Como nuestra base de datos es en SQL Server, pulsamos sobre el conector de Base de datos de SQL Server y se nos abre la ventana de configuración de la conexión, muy similar a la que se nos abre en Power BI Desktop.  En esta ventana, es muy similar a la de Power BI Desktop como podéis ver, con la salvedad de la puerta de enlace.

Si no hubiésemos rellenados los parámetros anteriores, la ventana que se nos abriría es la siguiente y por tanto habría que rellenar a mano los campos de servidor y os recomiendo el de la base de datos.


 
 

En cambio, como hemos creado los parámetros, la pantalla que se nos abre es la siguiente:

 
 
 

Y podemos ver dos lápices, que nos permite seleccionar los parámetros creados:


 
 

Una vez rellenados los campos de servidor y base de datos, y el conector que hemos elegido, admite consultas nativas a la base de datos y si tenemos conocimientos para ejecutar las consultas, os recomiendo desplegar las Opciones Avanzadas e introducir la sentencia SQL para traernos únicamente los datos que necesitamos para el modelo y no todos, es decir, hacer que las transformaciones se hagan en origen y no en destino. Os dejo aquí el enlace de los conectores que admiten consultas nativas de base de datos (https://learn.microsoft.com/es-es/power-query/native-database-query#connectors-that-support-native-database-queries)

A modo de ejemplo, para la tabla de Categoría de Productos de la base de datos de Contoso (ProductCategory), solamente vamos a incorporar al datamart las subcategorías cuya etiqueta son 01, 02 y 03:

 

 
 

Ahora, necesitamos que seleccionar la puerta de enlace a los datos necesaria para conectarnos a los datos. Podría entrar a cómo hay que instalarla, pero creo que no es el alcance de este post por lo que os dejo el link de Microsoft en el que lo explica: (https://learn.microsoft.com/es-es/power-bi/connect-data/service-gateway-deployment-guidance

Pero si tenéis cualquier duda, me comentáis sin problemas que para eso estoy.

Si, por el contrario, no sabemos de SQL no os preocupéis ya que no es necesario ya que podemos mantener el Query Folding o Plegado de consultas en Power Query. En este caso, dejamos en blanco la parte de la instrucción en SQL y le damos Aceptar. Y cómo podemos ver se nos abre la ventana para elegir las tablas o vistas que queremos para crear nuestro datamart al igual que en Power BI Desktop:

 

 
 

Una vez seleccionados nuestras tablas/vistas, pulsamos sobre Transformar Datos y ¡tachan! Vemos nuestros datos cargados en Power Query Online.

 
 
 

Y ahora podemos empezar hacer nuestro proceso de transformación de los datos y hacer magia. J

Por ejemplo, seleccionamos nuestra tabla Channel y vamos a proceder a eliminar columnas ETLLoadID, LoadDate y UpdateDate, para ello vamos a la opción Elegir Columnas y seleccionamos las columnas con las que queremos quedarnos:

 
 
 
 

Y nos ha eliminado las columnas que no necesitábamos como podéis ver:

 
 
 
 

Ahora podemos… ¡Ey! ¿No veis nada raro? Os hago zoom sobre la parte de la ventana los pasos de la consulta:

 
 
 
 

¿Qué significa esa línea roja? Que hemos roto el plegado de consultas y eso es algo que nos pasará en algún momento, pero debemos romperlo lo más tarde posible. ¿Cómo lo podemos evitar? Con la función Value.NativeQuery y así podremos mantener activo el plegado de consultas para los pasos posteriores de la consulta. (Os dejo aquí el link a la referencia de la función https://learn.microsoft.com/es-es/powerquery-m/value-nativequery)

Para ello, vamos al editor avanzado y modificamos el código que nos ha generado de manera automática por el siguiente código:

 

 
 
 

Como dice la página oficial de Microsoft: El componente más importante de esta fórmula es el uso del registro opcional para el parámetro forth de la función que tiene el campo de registro EnableFolding establecido en true.

Ahora, vamos a realizar el paso de selección de las columnas que necesitamos y damos a Aceptar:

 
 

Y magia:

 


¡Es el mismo paso, pero mantenemos el plegado!

Y antes de terminar esta primera entrada sobre Datamart: caso práctico de uso, voy con otra buena práctica. Que es renombrar las columnas y los comentar los pasos de la consulta. Para ello, hay dos maneras:

Sobre el paso botón derecho y propiedades:

 
 

Y en la ventana que se nos ha abierto, podemos rellenar los campos de Nombre y Descripción:

 

 
 

O en el Editor Avanzado, con la // podemos escribir los comentarios referentes a los pasos que damos:


 
 


Y como podemos ver, se nos habilita una i en los pasos de las consultas que si nos posicionamos sobre la misma se nos despliega el siguiente tooltip con la información::

 

 
 

 


 

 

Y hasta aquí la primera parte de la serie relativa a los Datamart: Caso práctico de uso, que si no me pongo a escribir y no paro. :)


¡Nos vemos en los datos!