¡Jueves! Y continuamos con la serie de Datamarts: Caso práctico de uso. Si te perdiste los dos post anteriores, te dejo aquí los respectivos enlaces para que puedas acceder a ellos.

En el post anterior, nos creamos nuestra tabla de dimensión producto como resultado de las combinaciones de las tablas ProductCategory y ProductSubcategory. Ahora os lanzo una pregunta ¿Qué levante la mano aquel que haya realizado un modelo y haya tenido que borrar alguna tabla y no sabía las dependencias que tenía dicha tabla? Yo el primero, y sí, también la he liado de esa manera J hasta que descubrí las dependencias de la consulta en Power Query. Os voy a mostrar un ejemplo con Power BI Destokp:

 


Y nos muestra la siguiente ventana que nos indica las dependencias de cada tabla, en este caso vemos que la tabla DimProduct depende de la tabla DimProductSubcategory y esta depende de la tabla DimProductCategory.

Y con Power Query online, vamos a la opción Ver de la barra de menú y a priori no hay la opción Dependencias de consulta… ¿no?


No y sí… hay algo personalmente mejor y según tengo leído estará disponible para Power Query en Power BI Desktop para Marzo del 2023… ¡y es a Vista Diagrama! ¿Y qué es la Vista Diagrama? Según la definición de Microsoft es una manera visual de preparar los datos en el editor de Power Query.

Lo primero que vemos cuando pinchamos sobre Vista Diagrama es el siguiente diagrama (¿qué raro que veamos un diagrama no? J ) que nos muestra todas las entidades de nuestro modelo, desde los servidores, BDD y tablas:

Y si hacemos zoom sobre las tablas de atributos vemos lo siguiente:

Son todos los pasos de consulta que hemos realizado previamente con su explicación para poder entender todos los pasos. Vamos a verlo:


Por ejemplo, si vamos a la tabla Dim_Product y nos posicionamos sobre el último paso:

 

Vemos que nos indica que el plegado de consultas lo hemos roto ya que este paso se evaluará fuera del origen de datos. Lo mismo que en los pasos de la consulta y menos mal que nos da lo mismo que sino… J.

Si nos posicionamos encima de cada uno de los iconos, vemos qué es lo que estamos realizando con su descripción y si el plegado de consultas se mantiene. ¿Qué os parece? ¿Útil? Bien, pues aún hay más. En la vista de diagrama podemos realizar procesos de ETL, modificación de pasos de consultas ya realizadas…  ¿Cómo? Vamos a verlo.

Por ejemplo, si quisiéramos añadir un nuevo paso a una consulta, basta con posicionarnos sobre el + de la vista de los pasos de la consulta:


Y se nos despliega un menú con las diferentes opciones:

 

Por ejemplo, como uno de los requisitos del modelo es el análisis de las ventas por continente y países. Si revisamos la tabla de hechos Fact_Sales, vemos que no tenemos ninguna columna con la que podamos relacionarla con la tabla Geography. ¿Entonces cómo vamos a poder satisfacer los requisitos del modelo? Vamos a ello, que viene lo divertido. 


 ¿Cómo he conseguido esta vista? Haciendo click en la vista de esquema de la barra de menú “Ver”:

 

Volvamos con el modelado, vamos a la tabla Geographyy hacemos click sobre el botón expandir para visualizar los pasos: 


 En la parte inferior de la pantalla, podemos ver el contenido de la tabla: 

Como podemos ver, la tabla contiene muchos valores NULL en las columnas CityName y StateProvinceName y tres en RegionCountryName, con formato Texto. Nuestro requisito del modelo es realizar un análisis por continente y país como hemos comentado, porque vamos a generarnos nuestras dimensiones partiendo de la tabla Geography. Para ello lo primero que la intuición nos lleva es a realizar click sobre los 3 puntitos y en el menú que se nos abre hacemos click sobre Duplicar:

 
Y acto seguido se nos ha generado una tabla duplicada de la misma sin estar referenciada o lo que es lo mismo, si aplicamos cambios sobre la tabla original Geography estos no afectan a la duplicada tal y como se puede ver en las dependencias de esta segunda, que no tiene relación:
 
 
A esta nueva tabla, lo primero que debemos hacer es cambiarle el nombre para evitar problemas. Ponemos en nombre Dim_Continent. Para obtener la tabla de dimensión continente, tenemos que tener todas las demás columnas a NULL, por lo que tenemos que filtrarlas. Para ello seleccionamos la opción Filtrar Filas pulsando el +: 
 

 
Y escogemos la opción avanzada y realizamos la selección deseada y pulsamos Aceptar: 
 
 
Y obtenemos la siguiente tabla: 
 
  
Y a continuación le damos al + y pulsamos sobre Elegir Columnas: 
 

 Y seleccionamos las columnas que necesitamos para nuestro modelo:


 

Y, por último, creamos una columna índice para usarlo con clave subrogada agregando un índice desde 1 para el modelo:

 

Y obtenemos como resultado:

Y repetimos las mismas operaciones para crear la dimensión País, con la diferencia que hemos aplicado un paso diferente, que es el quitar duplicados de la tabla para obtener los países:


¿Y ahora qué? Volvemos a duplicar la tabla Geography, y seleccionamos las columnas que necesitamos para nuestro modelo:

 

Y filtramos la columna RegionCountryName quitando los valores NULL: 

 

Y a continuación, combinamos esta tabla con la tabla Dim_Continent por la columna ContinentName: 

 

Vemos que nos devuelve 671 match de 671 posible. (¡Bingo!) Expandimos la tabla y nos traemos la columna IsContinent. Y ahora hacemos lo mismo para la tabla Dim_Country: 


 

Y nos devuelve… ¿Qué pasa aquí? No nos está devolviendo 671 match sino 634. ¿Cómo puede ser si la tabla Dim_Country ha salido de la tabla Geography? ¿Es un bug de Power Query y somos unos cracks llevando al límite la herramienta? Esta vez va a ser que no... 

Si recordáis, unas líneas más arriba he dicho “la intuición nos lleva…”. Primero que debemos hacer es limpiar los datos de la tabla para evitar que haya duplicados, espacios en blanco, etc…

Para ello, antes de duplicar la tabla Geography, sobre las columnas deseadas, las transformamos en mayúsculas:


Y a continuación recortamos las columnas. Ya tenemos preparada nuestra tabla para duplicarla y realizar los pasos anteriores y así conseguimos 100% de match en los registros. J
 


Y por hoy ya es más que suficiente. Seguiremos en el siguiente ¡jueves de post!

 

¡Nos vemos en los datos!