¡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!