Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Caso de Estudio Azure: Retail.SA — Desbloqueando el Poder de los Datos para la Transformación Empresarial

Armando Ruiz
13 min readJust now

--

by Armando Josue Ruiz Yen

Presentación del Caso

Introducción:

En el competitivo panorama minorista actual, Retail.SA se embarca en una misión crucial: aprovechar el poder de los datos para comprender mejor a sus clientes, optimizar sus operaciones y tomar decisiones estratégicas más informadas. Para ello, Retail.SA ha recurrido a su experiencia en Azure para diseñar e implementar un flujo de análisis de datos basado en la tecnología Azure.

Desafío:

Retail.SA se enfrenta a un creciente volumen, variedad y velocidad de datos, lo que supera las capacidades de sus sistemas tradicionales de análisis de datos. La empresa necesita una solución escalable y robusta que pueda gestionar de manera eficiente este aluvión de información y transformarla en conocimientos accionables.

Requerimientos:

Retail.SA ha optado por construir un data lake basado en la arquitectura Delta Lake en Azure. Esta solución les permitirá: • Almacenar de forma segura y centralizada todos sus datos estructurados, no estructurados y semiestructurados.

  • Implementar un proceso de ingesta de datos automatizado y escalable utilizando Azure Data Factory (ADF).
  • Realizar procesos de extracción, transformación y carga (ETL) eficientes con Azure Databricks, aprovechando la potencia de la computación en la nube.
  • Visualizar y analizar los datos de forma interactiva a través de dashboards dinámicos en Power BI.
  • Orquestar todo el flujo de datos de manera eficiente utilizando ADF, garantizando la calidad y la integridad de los datos.

Una vez se haya complentado el desarrollo del proyecto, se deben poder responder las siguientes preguntas mediante el dashboard:

  • Statement 1: Mostrar un Top 20 de clientes que más productos compraron con sus respectivos montos.
  • Statement 2: Mostrar las categorías con el total de productos vendidos y los montos totales por categoría.
  • Statement 3: Mostrar la categoría más vendida por ciudad.
  • Statement 4: Mostrar los 5 productos más vendidos por cada ciudad y el monto recaudado.

Modelo de Datos de Referencia:

Modelado de Datos

Diseño y Planificación

Arquitectura de Datos

Primero, vamos a identificar las fuentes de datos. En este caso, utilizaremos archivos planos, pero también podríamos tener información en un sistema de bases de datos on-premise o en un CRM. Luego, vamos a ingerir la información mediante Azure Data Factory, llevándola a las diferentes capas de almacenamiento: landing, bronze, silver y gold.

Una vez realizado el almacenamiento, todo será procesado por Databricks según los requerimientos solicitados. Posteriormente, los datos se trasladarán a la capa analítica, utilizando Azure SQL Database como sistema de almacenamiento de datos (DWH). Finalmente, nos conectaremos a la capa de visualización, utilizando Power BI según las necesidades.

Para la orquestación, utilizaremos Azure Data Factory. Es importante tener en cuenta la gestión de costos, ya que operamos con un presupuesto mensual. Para esto, emplearemos Cost Management and Billing. Los accesos se gestionarán mediante Azure Active Directory, los secretos se guardarán en Azure Key Vault, y para los temas de CI/CD o como repositorio de los notebooks de Databricks, utilizaremos Azure DevOps.

Pricing:

Al estar en un ambiente de aprendizaje, asignamos un presupuesto mensual de 10$, por lo que tendríamos los siguientes datos:

Desarrollo de la Solución

Prerequisitos

En esta fase se crean y configuran todos los artefactos necesarios para
desarrollar los siguientes pasos del proyecto.

Grupo de Recursos:

  • Iniciar Sesión en Azure Portal y abrir el Cloud Shell.
    OJO: La primera vez que inicie Cloud Shell se le pedirá que cree una cuenta de Azure Storage para el recurso compartido de archivos de Azure.
  • Seleccione la suscripción usada para crear la cuenta de almacenamiento y el recurso compartido de archivos.
  • Seleccione Crear almacenamiento (Create Storage)
  • Listar las suscripciones (copia y pega el siguiente comando)
    >>> az account list
  • Establecer la suscripción en la que se trabajará
    >>> az account set — subscription ‘my-subscription-name’
  • Crear grupo de recursos
    >>> az group create — name rg-datapath-dev-001 — location eastus2
  • Comprueba si existe un grupo de recursos
    >>> az group exists — name rg-datapath-dev-001
  • Lista los grupos de recursos que existe
    >>> az group list

Azure Data Lake Storage Gen 2:

  • Ir anuestro grupo de recursos creado, luego dar clic en [create]
  • EnelMarketplace escribir [Storage Account] y seleccionar Storage Account
  • DarClic en [Create]
  • En la configuración básica seleccionar el grupo de recursos, nombre, región y el tipo de redundancia, luego dar clic en siguiente.
  • En la sección de configuración avanzado, habilitar la jerarquía (esta parte determina que el servicio se establece como ADLS GEN2) , y activar el tipo de almacenamiento, en este caso [hot]. Las demás configuraciones lo dejamos por defecto, y dar clic en [Review]
  • Una vez finalizado el review, presionamos en [Create], de esta forma tendremos creado nuestro Azure Data Lake Storage GEN2.

Azure Data Factory:

  • Ir al grupo de recursos creado (reutilizar el grupo de recursos del M03 “rg-datapath-synapse-001”), luego ir a “+ Create”, finalmente en el Marketplace escribir “azure data factory” y seleccionar “Create”
  • En la sección “Basics” configurar lo siguiente:
    a. Resource group: rg-datapath-synapse-001
    b. Name:adf-emissions-dev
    c. Region: East US 2
    d. Version: V2
  • Clic en “Review + Create” → “Create” → “Go to resource”
  • Dentro del recurso creado clic en “Launch studio”

Azure SQL Database:

  • Ir al grupo de recursos creado (reutilizar el grupo de recursos del M03 “rg-datapath-synapse-001”), luego ir a “+ Create”, finalmente en el Marketplace escribir “sql database” y seleccionar “Create”
  • Enla sección “Basics” configurar lo siguiente:
    a. Resource group: rg-datapath-synapse-00
    b. Database Name: db-datapath
    c. Server: “Create New”
  • Seguidamente:
    c.a. Server name: server-datapath
    c.b. Location: (US) East US 2
    c.c. Authentication method: Use SQL authentication
    c.d. Server admin login: username Clic en “OK”
  • Want to use SQL elastic pool?: No
  • Workload environment: Development
  • Backup storage: Local
  • Clic en “Review + Create” → “Create” → “Go to resource”
  • Ir a “query editor (preview)”
  • Ingresar con las credenciales, nos aparecerá un error debido al firewall
  • Ir a “Overview” luego en la parte superior central ir a “ Set server firewall” → “Public access” → “select networks”
  • Ir a la sección de “Firewall rules” luego clic en “ Add a firewall rule” a continuación colocar nuestra ip de conexión a internet, finalmente “save”
  • Ir a “Query editor” ingresar con nuestras credenciales
  • Abrir un “New Query” y pegar la siguiente consulta:
  • Ir a nuestro adsl y dentro de nuestro contenedor “source” crear una carpeta llamada “input” finalmente subir archivo “emp.txt”

Key Vault:

  • Ir al grupo de recursos creado (reutilizar el grupo de recursos del M03 “rg-datapath-synapse-001”), luego ir a “+ Create”, finalmente en el Marketplace escribir “key vault” y seleccionar “Create”
  • Enla sección “Basics” configurar lo siguiente:
    a. Resource group: rg-datapath-synapse-001
    b. Key vault Name: kv-datapath
    c. Region: East US 2
    d. Pricing Tier: Standard
  • Clic en “Review + Create” → “Create” → “Go to resource”
  • Ir a “Access control (IAM), luego “Add”, clic en “Add role assignment”
  • En“Job function roles” seleccionar “key vault contributor”, luego clic en “Members”
  • En“Assign access to” seleccionar ‘User, group, or service principal’, luego en “Members” clic en ‘+ Select members’
  • En la ventana abierta escribir nuestro usuario y selecionarlo
  • Repetimos los pasos para asignar permisos a nuestro servicio Azure Data Factory, cambiando en el paso 3 “Assign access” a ‘Manage identity’
  • Seleccionar nuestro servicio, finalmente clic en “select”
  • Los permisos deberán aparecer así:

Databricks:

  • Utilizar el grupo de recurso creado previamente
    Nombre grupo de recurso: rg-datapath-synapse-001
  • Ingresar al grupo de recursos creado, y en la parte superior seleccionar “Create”
  • En el Marketplace escribir “azure databricks” y seleccionar el recurso, luego clic en “create”
  • Configurar el workspace en “basics”:
    a. Resource group: rg-datapath-synapse-001
    b. Workspace name: dbw-datapath-etl
    c. Region: East US 2
    d. Pricing Tier: Trial (Premium– 14 Days Free DBUs) *manage resource group
  • Clic en “Review + create” → “Create” → “Go to Resource”
  • Una vez creado el workspace, clic en “Launch Workspace”
  • Finalmente se abrirá una nueva ventana en el navegador con el espacio de trabajo de Databricks

Virtual Machine:

  • Escriba máquinas virtuales en el cuadro de búsqueda.
  • En Servicios, seleccione Máquinas virtuales.
  • En la página Máquinas virtuales, selecciona Crear y, luego, Máquina virtual de Azure. Se abrirá la página Creación de una máquina virtual.
  • En Detalles de instancia, escriba myVM en Nombre de máquina virtual y elija Windows Server 2022 Datacenter: Azure Edition — x64 Gen2 para la Imagen. Deje los demás valores predeterminados.
  • En Cuenta de administrador, proporcione un nombre de usuario, como azureuser, y una contraseña. La contraseña debe tener al menos 12 caracteres de largo y cumplir con los requisitos de complejidad definidos.
  • En Reglas de puerto de entrada, elija Permitir los puertos seleccionados y luego seleccione RDP (3389) y HTTP (80) en la lista desplegable.
  • Deje los valores predeterminados restantes y luego seleccione el botón Revisar + crear en la parte inferior de la página.
  • Después de que se ejecute la validación, seleccione el botón Crear en la parte inferior de la página.
  • Una vez finalizada la implementación, seleccione Ir al recurso.

Ingesta:

Se configura y despliega Azure Data Factory para la transferencia de datos
desde diversas fuentes como archivos planos, bases de datos on-premise y
CRM, hacia la capa de landing. Se establecen conexiones con las diferentes
fuentes de datos y se definen los esquemas y formatos necesarios.

Configurar Self Host runtime (Infraestructura de cómputo para integrar datos de diferentes entornos de red)

  • Ir a Azure Data Factory, a la sección de “Manage”, luego a “Integration Runtime”, finalmente dar clic en “New”
  • En la ventana emergente, dar clic en “Azure, Self-Hosted”, luego en “Continue”
  • En la siguiente ventana, dar clic en “Self Hosted”, finalmente clic en “continue”
  • Agregar el nombre “IR-localhost”, finalmente dar clic en “Create”
  • Ahora descargar el Setup de Integration Runtime para configurarlo en nuestro equipo local, clic en “Download” luego se debe tener en cuenta “Key 1” para pegar durante la instalación (no se debe cerrar esta ventana)
  • Cuando damos clic en el enlace de “Download” nos redirecciona una página web para descargar el setup, vamos hasta la sección de “Microsoft Integration Runtime”, finalmente clic en “Download”
  • Seleccionamos la versión, luego dar clic en “Download”. Esperar entre 2–5 minutos para la descarga
  • Vamos a la carpeta donde elegimos la descarga en nuestro equipo local e iniciamos a instalar la aplicación
  • Doble clic, seleccionar idioma, aceptar términos y condiciones, siguiente, siguiente, Finalizar.
  • Una vez le dimos clic en “finalizar”, nos aparecerá la ventana para pegar el “key 1” que se encuentra en el ADF, finalmente dar clic en “Register”
  • Nos aparecerá el nombre de nuestro equipo, finalmente dar clic en “Finish”
  • Se valida la instalación, finalmente dar clic en “Close”

Ir a nuestro ADLS, crear un container “project”, crear directorios landing, bronze, silver, gold

Configurar On premise to cloud

  • Abrir cmd como administrador
  • Ir a la siguiente ruta
  • Finalmente ejecutar el siguiente comando
    .\dmgcmd.exe -DisableLocalFolderPathValidation

Ir a ADF → Manage → linked service → New → File system

Crear linked service para equipo local (Virtual Machine)

Regresamos a la sección de “Home” luego dar clic en “Ingest”

Configurar modo de ejecución

Configurar fuente de datos

Configurar tipo de archivo

Configurar dataset

Configurar formato de archivo

Configurar nombre de pipeline

Realizar despliegue de conexión

Validar despliegue

Regresamos a “Author”, seleccionamos nuestro pipeline “COPY_RETAIL” y ejecutamos

Regresamos a nuestro “ADLS”container “project” y validamos la data

Procesamiento:

Se configura y despliega Databricks para transformar y procesar los 
datos almacenados. Se desarrollan notebooks en Databricks que realizan
las transformaciones necesarias, limpiando, enriqueciendo y estructurando
los datos según los requisitos del negocio.

Crear Secretos de la base de datos

  • ServerName: server-retail-02.database.windows.net
  • DatabaseName: db-retail-02
  • UserName: retail2
  • PasswordDatabase: Thenights04#

Ejecutar proceso ETL en azure databricks

Visualización:

Se configura y despliega Power BI para la visualización de los datos,
desarrollando informes y dashboards que permiten a los usuarios finales
tomar decisiones informadas. Los informes se publican y se configuran
permisos para asegurar el acceso autorizado.

Abrir Power BI Desktop

Ir a “Get Data” luego dar clic en “more”

En la ventana emergente escribir “azure sql” y seleccionar “azure sql database”, finalmente clic en “connect”

En la ventana emergente escribir los datos del servidor y seleccionar en modo de conexión “direct query”

Dar clic en “Database”, luego colocar los datos de la base de datos

Seleccionamos las 4 tablas de statement

Creamos el dashboard con la información

Publicamos el tablero

El dashboard publicado se encuentra en el siguiente link:

--

--