¡Jueves! Primer post del año 2023 y continuamos con la serie de datamart. Este post tocaba la semana pasada pero ya me perdonaréis, pero me estuve preparando para examinarme de la certificación DP-500: Azure Enterprise Data Analyst Associate (¡y la aprobé! J). Ya os contaré en otro post como ha sido mi experiencia con esta certificación.

Recapitulemos, en el post anterior hablamos de cómo creábamos un datamart, su carga de datos, el query folding y unos tips con buenas prácticas, si te lo perdiste, te dejo aquí el link. En este post veremos el proceso de transformación, carga y claves para un correcto modelado. Como suelo decir, este proceso son los cimientos de nuestro modelo.

Antes empezar con todo el proceso de transformación, debemos de tener claro el objetivo de nuestro modelo y las preguntas de negocio a las que tenemos que dar respuesta:

·        Analizar las ventas temporales por:

o   Producto, categoría y subcategoría.

o   Promociones aplicadas.

o   Continentes, países y tiendas con más ventas

o   Medio por el que se han realizado las ventas.

o   Empleados con más ventas.

Una vez obtenidos los requerimientos de nuestro modelo, lo que a mí me gusta realizar, es la identificación de las tablas, es decir, identificar las tablas de hechos y las de dimensión. Para ello creamos un grupo para cada uno de ellas:

Y a las tablas de hechos les añadimos el prefijo “Fact_” y las arrastramos al grupo recién creado:

 

Y realizamos casi el mismo proceso para las tablas de dimensión, pero sin añadir aún el prefijo “Dim_” que lo haremos más adelante, y se nos queda el siguiente esquema, que, aunque no será el definitivo, nos aporta una visión más clara de nuestro modelo:


 

Os estaréis preguntado por qué no le he puesto el prefijo “Dim_” a las tablas, bien, el motivo es que no todas las tablas las consideraremos como dimensión, sino que algunas serán atributos de las tablas de dimensión, y puede que no sea necesario cargarlas a nuestro modelo. Acordaros que nuestro objetivo siempre que podamos, será llegar a un modelo en estrella. Como dice Toni Jurado, “Sigue el camino de la estrella” (y qué mejor que la noche de los Reyes Magos ... J )

Uno de los requerimientos del negocio, es el análisis de los datos por producto, categoría y subcategoría. Vamos a analizar las tablas, para ello seleccionamos la tabla de Categoría:

 

Vemos que tiene 6 columnas que son:

  • ProductCategoryKey  (Clave de negocio o clave Principal) à Tipo número entero.
  • ProductCategoryLabel à Tipo texto
  • ProductCategoryName à Tipo texto
  • ProductCategoryDescription à Tipo texto
  • ETLLoadID à Tipo número entero
  • LoadDate à Tipo fecha y hora
  • UpdateDate à Tipo fecha y hora


De este primer análisis, debemos eliminar las columnas que no sean necesarias para nuestro modelo, y estas son: ProductCategoryLabel, ETLLoadID, LoadDate y UpdateDate.

¿Por qué no son necesarias? Porque no son un requisito para el análisis de nuestro modelo y, por tanto, no las necesitamos. 

 

Nota: las columnas LoadDate y UpdateDate son columnas de tipo fecha y hora, si para nuestro modelo las necesitásemos, recordar que deberíamos separarlas en dos columnas, una con la fecha otra con la hora ya que se comprimen mejor.

Ahora, vamos a la tabla ProductSubcategory:

  • ProductSubcategoryKey  (Clave de negocio o clave Principal) à Tipo número entero.
  • ProductSubcategoryLabel à Tipo texto
  • ProductSubcategoryName à Tipo texto
  • ProductSubcategoryDescription à Tipo texto
  • ProductCategoryKey à (Clave secundaria) à Tipo número entero
  • ETLLoadID à Tipo número entero
  • LoadDate à Tipo fecha y hora
  • UpdateDate à Tipo fecha y hora

De este análisis, debemos eliminar las columnas que no sean necesarias para nuestro modelo, y estas son: ProductSubcategoryLabel, ETLLoadID, LoadDate y UpdateDate.


 

Una vez ya hecho el trabajo de limpieza de estas dos tablas, podemos combinarlas entre ellas. Para ello, vamos a Combinar consultas y seleccionamos la columna por la que queremos combinarlas:


 

Como dato importante, vemos que de los 44 registros de la tabla ProductSubcategory, hay 44 coincidencias. ¿Esto qué significa? Que para cada fila de las 44 de la tabla ProductSubcategory, hay una coincidencia exacta en la tabla ProductCategory. O lo que es lo mismo, cada subcategoría tiene una categoría asociada.

A continuación, expandimos la tabla combinada y seleccionamos las columnas que necesitamos:

 

Si nos fijamos en los pasos aplicados en la consulta, el plegado de consultas se mantiene:

 

¿Y por qué se mantiene el plegado de consultas? Por qué no lo hemos roto en la tabla ProductCategory. En cambio, si lo hubiésemos roto, al combinarla con la tabla ProductSubcategory, el plegado estaría roto. Por eso, salvo que sea indispensable, debemos mantener el plegado hasta el final.

Si os fijáis en la parte de las consultas, en la tabla ProductSubcategory, nos ha aparecido un icono de un rayo, ¿qué significa?

 

Significa que es una entidad calculada, o lo que es lo mismo, realizar cálculos en almacenamiento. En nuestro caso, no queremos cargar al modelo la tabla ProductCategory, ya que la hemos combinado con la tabla ProductSubcategory, por lo que deshabilitamos la carga de la misma y acto seguido nos desaparece el icono del rayo:

 

Ahora vamos a la tabla Product y realizamos el mismo proceso que hemos hecho en las otras dos tablas que son: seleccionamos las columnas que queremos y combinamos la tabla con ProductSubcategory. 

 

 

Ahora ya tenemos nuestra tabla de dimensión completa… ¿Seguro? Sí pero no, ya que es recomendable coger el hábito de crear nuestras propias claves subrogadas, que son claves que generamos nosotros mismos y que no tienen relación con el modelo del negocio. ¿Con que objetivo?

  • Evitar las claves que no sean numéricas. (en este caso lo son, pero muchísimas veces no lo son)
  • Posibilidad de tener SCD (Dimensiones lentamente cambiantes)

 

Antes de generar la columna índice, debemos asegurarnos de que no tenemos ningún registro duplicado en nuestra tabla de dimensión dado que la relación con la tabla de hechos va a ser 1 a varios.  Para ello, seleccionamos la tabla completa, haciendo click en la zona superior izquierda de la tabla:

 

Si hubiésemos quitado duplicados seleccionando una columna, sólo quitaría los duplicados de esa columna. Como podemos ver, nos sigue manteniendo el plegado de consultas J.

Ahora, ¿cómo generamos una clave subrogada? Vamos a la opción Agregar columna y seleccionamos “Columna de índice”, y que comience desde 1.

Y automáticamente, Power Query nos ha generado una columna que será la que usemos como clave subrogada.

 

En este paso, podemos aprovechar y cambiarle el nombre sin añadir un paso extra. Para ello, en la barra de pasos, escribimos el nombre que le queremos dar a la columna nueva, en este caso “IsProductCategory”:

 

Y podemos ver que el nombre de la columna se ha modificado correctamente y en la parte de pasos aplicados no se ha añadido uno nuevo.Pero fijaros que hemos roto el query folding con este último paso, por lo que este paso no se evaluará en el origen sino en destino.

Ahora, para tener la vista de consultas más limpia, creamos un grupo nuevo para mover las tablas que son los atributos de dimensión.

Tal y como podéis ver en la siguiente imagen:

 
 

Y por último y a modo de limpieza y orden del modelo, una vez ya modelizada nuestra tabla de dimensión Product, le añado el sufijo “Dim_” para que de un vistazo rápido se distingan rápidamente las tablas.

 
 

Y con esto, ya tenemos nuestra tabla de dimensión producto, preparada para ser utilizada.Y por hoy, hasta aquí ya está bien que sino me lío y os tengo aquí hasta mañana.

¡Nos vemos en los datos!