DE Challange Olay

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Sección 1: Conocimientos Teóricos

Azure Data Factory (ADF): Azure Data Factory es un servicio de orquestación de datos en la nube
proporcionado por Microsoft. Su función principal es facilitar la creación, programación y
administración de flujos de trabajo de datos. En el proceso de ETL (Extract, Transform, Load), ADF
desempeña los siguientes roles:

Extracción (Extract): Permite extraer datos de diversas fuentes, como bases de datos, archivos,
servicios web, etc.

Transformación (Transform): Proporciona herramientas para transformar los datos, aplicando


limpieza, agregación, enriquecimiento o cualquier otro procesamiento necesario.

Carga (Load): Facilita la carga de datos transformados en destinos como almacenes de datos, data
lakes o sistemas de análisis.

Diferencia entre Data Warehouse y Data Lake:

Data Warehouse: Es una base de datos optimizada para consultas y análisis. Almacena datos
estructurados y normalizados, generalmente provenientes de sistemas transaccionales. Los data
warehouses son ideales para consultas ad hoc y generación de informes.

Data Lake: Es un repositorio de datos que almacena información en su formato original (sin
estructurar) y a gran escala. Puede contener datos estructurados, semiestructurados y no
estructurados. Los data lakes son flexibles y se utilizan para almacenar grandes volúmenes de datos
antes de aplicar transformaciones específicas.

Ejemplo: Podríamos recolectar datos de clics de usuarios en una aplicación móvil. Si desemos realizar
análisis exploratorios rápidos y generar informes, un data warehouse sería más adecuado. Sin
embargo, si quisiéramos almacenar todos los datos brutos (incluyendo registros de errores, eventos
raros, etc.) para futuros análisis más profundos, un data lake sería la elección correcta.

Notebooks en Databricks:

Los notebooks son entornos interactivos que combinan código (generalmente en lenguajes como
Python, Scala o SQL) con documentación y visualizaciones (Markdown).

En Databricks, los notebooks son ampliamente utilizados para explorar datos, prototipar algoritmos,
realizar análisis y crear flujos de trabajo de transformación.

Puedes escribir código en celdas individuales, ejecutarlas y ver los resultados inmediatamente. Esto
facilita la colaboración y la iteración en proyectos de procesamiento de datos.

Sección 2: Práctica en Azure Data Factory


Extracción de datos desde SQL Server:

Utilizaremos una actividad de tipo “Copy Data” en Azure Data Factory.

Configuraremos la conexión al origen SQL Server y definiremos la consulta para extraer los datos
necesarios.

El resultado se almacenará en el Data Lake en formato Parquet.

Invocación del notebook en Databricks:


Crearemos una actividad de tipo “Databricks Notebook” en el pipeline.

Configuraremos la conexión al entorno de Databricks y especificaremos el notebook que realizará el


procesamiento desconocido.

Los datos previamente extraídos del Data Lake serán utilizados como entrada para el notebook.

Carga de datos transformados en el Data Warehouse de Azure:

Agregaremos otra actividad de tipo “Copy Data” en el pipeline.

Configuraremos la conexión al Data Warehouse (por ejemplo, Azure Synapse Analytics o Azure SQL
Data Warehouse).

Especificaremos la tabla de destino y mapearemos los campos transformados.

Sección 3: Práctica en Databricks

# Leemos los datos del storage account en formato Parquet

ruta_almacenamiento = "abfss://<
mi_nombre_contenedor>@<mi_nombre_cuenta>.dfs.core.windows.net/<ruta_archivo>.parquet"

df = spark.read.parquet(ruta_almacenamiento)

# Filtramos las filas correspondientes al año 2017

df_filtrado = df.filter(df["año"] == 2017)

# Seleccionamos solo la columna 'id' y las columnas de tipo string

columnas_seleccionadas = ["id"] # inicializo id en caso de no ser string

for col,dtype in df_filtrado.dtypes:

if dtype == "string":

columnas_seleccionadas.append(col)
# Antes de filtrar debería verificar de no repetir id en caso de que si fuese string

df_resultante = df_filtrado.select(*columnas_seleccionadas)

# Guardamos el DataFrame resultante en la misma ubicación con la carpeta específicada, vale aclarar
que no estoy seguro de si esto funcione por la ñ, normalmente estas cosas las guardo en ingles…

ruta_guardado = "abfss://<
mi_nombre_contenedor>@<mi_nombre_cuenta>.dfs.core.windows.net/<ruta_guardado>/año=201
7"

# Utilizo overwrite para asegurarnos de generar data nueva en caso de conflictos con el origen

df_resultante.write.mode("overwrite").parquet(ruta_guardado)

También podría gustarte