Skip to content
Alfredo Ignacio Rodriguez edited this page Nov 16, 2022 · 13 revisions

Bienvenido a Skill-Up-DA-c-Python wiki!

Proyecto de ETL

Se desarrolló un proceso de extracción , transformación y carga utilizando la herramienta Apache Airflow de código abierto y basada en python. Se emplearon librerias de python como airflow, pandas, numpy, y la carga se realizó en amazon S3. El proyecto consiste en realizar una consulta sql Postgres sobre una base de datos, acerca del registro de inscripciones en las principales universidades de Argentina, lo cual comprende al proceso de extracción. Para el proceso de transformación se normalizaron las columnas, se calcularon edades, se cambiaron a minúsculas y se agregó una columna faltante por universidad ya sea location o postalcode, guardando los datos en formato txt. En el proceso de carga, se subió a un bucket aws S3 la información transformada.

Convención para nombrar carpetas

-assets: archivos complementarios necesarios.

-dags: para dejar los flujos que se vayan creando

-datasets: para dejar el archivo resultante del proceso de transformación con Pandas

-files: para almacenar la extracción de la base de datos.

-include: para almacenar los SQL.

Convención para nombrar archivos

DAG ETL

Se colocará grupo-letra-siglas de la universidad y localidad, seguido por "_dag_elt.py" para diferenciar de otros csv.

GFUNRioCuarto_dag_etl.py

Convencion para el nombre de la base de datos

conexion con base de datos

'alkemy_db'

conexion para S3

'aws_s3_bucket'

csv generados

Se colocará grupo-letra-siglas de la universidad y localidad, seguido por "_select.csv" para diferenciar el dag realizado.

GFUNRioCuarto_select.csv

txt generados

Se colocará grupo-letra-siglas de la universidad y localidad, seguido por "_process.txt" para diferenciar el dag realizado.

GFUNRioCuarto_process.txt

Logging

Se optó entre:

  • sin archivo de configuracion, seteando logger, formatter, handler de manera "manual", dentro del mismo dag
  • con archivo de configuracion

Sistema de archivo

se optó entre:

  • guardar los archivos generados en las carpetas que provee Astronomer por default (include, tests, dags, etc)
  • montar nuevos volumenes personalizados de acuerdo a la estructura sugerida en el repositorio github

Transformación

  • columna Age : condición de filtrado --> (Fecha de nacimiento < fecha de inscripcion) y edad > 18. Como muchos datos no cumplían con el criterio de filtrado, cada grupo tomó la decision de manera personal de cómo asignar los datos que no era coherentes (mediana, media, numero fijo, numeros randomizados entre ciertas edades, etc)

  • output txt : sep ='\t'

Dags dinamicos

se optó entre:

  • dags factory + yaml
  • genrator.py + template.jinja2 + yaml

Storytelling

El análisis de los datos normalizados, se realizó en notebooks de Colab o Jupyter. A partir de gráficas usando las librerías Seaborn y Matplotlib, se buscó algún tipo de estructura en los datos que hablara de algún patrón de comportamiento o arrojara algún KPI. Las conlusiones en este sentido, se incluyen en los notebooks. Hay un notebook (archivo .ipynb) por grupo de univerdidades en el directorio assets/notebooks.