En esta nueva entrada estaremos hablando de como organizamos la segunda y tercera capas de la arquitectura Medallion de nuestra prueba de concepto. A estas capas se les conoce como Plata y Oro.
La capa Plata
En esta capa se llevarán a cabo la mayoría de las transformaciones que requieren los datos. Para realizar las transformaciones utilizaremos flujos de datos.
Los datos de origen de esta capa se encuentran en el Lakehouse datos_origen, de la capa Bronce, y están almacenados en tablas.
El destino de los datos será otro Lakehouse al que llamaremos datos_transformados y también se almacenarán en tablas.
Crearemos un flujo de datos para transformar todas las tablas de dimensiones y luego crearemos otro por cada tabla de hechos: presupuestos, tickets y ventas. En total serán 4 flujos de datos.
Flujo de datos Gen2 transformar_dimensiones
Al crear el flujo de datos escogeremos como origen de datos el Lakehouse dentro de las opciones de Microsoft Fabric.
A continuación especificamos la conexión.
Elegimos en el navegador el área de trabajo donde se encuentra el Lakehouse, desplegamos los objetos y seleccionamos datos_origen, el Lakehouse que creamos en la capa Bronce y donde están almacenados los datos.
En el flujo de datos se crea una consulta con el mismo nombre del Lakehouse que contiene las tablas.
A esta consulta le deshabilitaremos el almacenamiento provisional y crearemos referencias para cada uno de los orígenes de datos que nos interesan: clientes, productos, tiendas, municipios y vendedores.
Todas las consultas requerirán transformaciones como asignar el tipo de datos correspondiente a cada columna, recordemos que los datos se almacenaron como texto, y a todas las consultas excepto a municipios se le añadirá una columna índice como llave sustituta.
En el caso de la tabla clientes, transformaremos la columna fecha de nacimiento para calcular la edad del cliente y añadiremos una columna índice que será la clave subrogada de esta consulta.
Cuando el origen de datos no contiene grandes volúmenes de datos y si no va a unir datos de diferentes fuentes de datos o si no está realizando transformaciones de proceso o memoria intensivas, como unir o agregar grandes volúmenes de datos podemos deshabilitar el almacenamiento provisional y cargar directamente en el destino de salida.
Si nos fijamos en la consulta tiendas podemos ver un rayo de color naranja, esto indica que en esta consulta se usará el motor de proceso mejorado durante la actualización. Esta consulta consulta combina datos de tiendas y municipios.
El resto de consultas no requiere de transformaciones especificas por eso no las analizaremos en detalle.
Por último debemos asignar un destino a cada una de las consulta excepto a municipios y datos_origen. El destino de todas las consultas será un nuevo Lakehouse, datos_transformados.
Para definir el nuevo destino escogemos Lakehouse y a continuación como hicimos al inicio seleccionamos primero el área de trabajo y luego el Lakehouse.
Especificamos si la tabla es nueva o ya existe y el nuevo nombre de la tabla. Escogemos el método de actualización, las opciones del esquema y el mapeo de los campos entre origen y destino. Recuerda que los nombres de las columnas no deben contener espacios en blanco.
Flujo de datos Gen2 transformar_ventas
El flujo de datos transformar_ventas es muy similar al transformar_dimensiones. Al igual que en el flujo transformar_dimensiones creamos una consulta que conecte con el Lakehouse datos_origen y la referenciamos: ventas_eur, ventas_usd y conversion_eur. A las consultas ventas_eur y ventas_usd le añadiremos una columna con el nombre de la tabla de origen para poder diferenciarlas luego. La consulta ventas_usd debe combinarse con la consulta conversion_eur para transformar los importes de dolar a euro. Finalmente las consultas ventas_eur y ventas_usd se anexan para formar la consulta ventas. La consulta ventas es la única que tendrá un destino.
De la misma forma que creamos el flujo de datos transformar_ventas creamos transformar_presupuestos y transformar_tickets.
Orquestar el proceso de transformar los datos
Para orquestar todas las transformaciones de esta capa crearemos una canalización igual que hicimos en la capa de bronce. A esta canalización la llamaremos transformar_datos y lo que hará será llamar cada uno de los flujos de datos para que se ejecuten en orden secuencial.
Ejecutamos la canalización y podemos ver los tiempos que demora cada flujo de datos en ejecutarse así como el tiempo total que demora la canalización.
Una vez ejecutada la canalización podemos ver el Lakehouse datos_transformados con todos los datos cargados.
La capa Oro
En esta capa se llevarán a cabo las últimas transformaciones y se dejará a punto el modelo tabular que cargaremos en el modelo semántico.
Para la capa de oro los datos se almacenarán en un Almacén, en lugar de un Lakehouse, al que llamaremos modelo_datos.
Para realizar la carga de los datos en el almacén y realizar las últimas transformaciones crearemos un único flujo de datos al que llamamos modelar. Tendrá como origen de datos el Lakehouse datos_transformados y al igual que hicimos en la capa Plata crearemos una consulta maestra que conecte con el Lakehouse y que contendrá todas las tablas.
Como parte de las transformaciones que se llevarán a cabo en esta capa está el combinar las tablas de hechos con las tablas de dimensiones para reemplazar el campo clave de negocio por el campo clave sustituta que creamos en la capa de Plata. También asignaremos el tipo de datos correspondiente a cada columna de cada tabla. Crearemos la tabla Calendario con los campos requeridos. Se elegirán las columnas que se utilizarán en cada tabla del modelo semántico.
Todas las consultas tendrán como destino el Almacén modelo_datos. La configuración del destino es muy similar a la del Lakehouse solo que el esquema no puede ser dinámico.
En esta capa no necesitaremos de una canalización porque solamente debemos ejecutar un flujo de datos.
Orquestar el proceso completo de ETL
Para ejecutar todo el proceso de ETL hemos creado una nueva canalización etl_completa. Esta canalización será la que se encargue de ejecutar las canalizaciones de las capas bronce y plata y el flujo de datos Gen 2 de la capa de oro y actualizar el modelo semántico del área de trabajo PRO.
Para la actualización del modelo semántico del área de trabajo PRO estamos utilizando la API REST de Power BI y la implementamos como una actividad Web de la canalización.
En la configuración de la actividad Web se debe crear una conexión y seleccionarla, especificar la dirección relativa del dataset que se quiere actualizar y elegir el método Post entre otras propiedades.
Finalmente estamos listos para ejecutar la canalización y llevar a cabo todo el proceso de ETL.
Una vez que los datos se han cargado en el modelo semántico podemos apagar la capacidad Fabric y trabajar con el modelo semántico y el informe.
En la próxima y última entrada de la serie mostraremos los costes de todo el proceso de ETL.