-
Notifications
You must be signed in to change notification settings - Fork 7
Home
Bienvenido a Skill-Up-DA-c-Python wiki!
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.
-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.
Se colocará grupo-letra-siglas de la universidad y localidad, seguido por "_dag_elt.py" para diferenciar de otros csv.
GFUNRioCuarto_dag_etl.py
'alkemy_db'
'aws_s3_bucket'
Se colocará grupo-letra-siglas de la universidad y localidad, seguido por "_select.csv" para diferenciar el dag realizado.
GFUNRioCuarto_select.csv
Se colocará grupo-letra-siglas de la universidad y localidad, seguido por "_process.txt" para diferenciar el dag realizado.
GFUNRioCuarto_process.txt
Se optó entre:
- sin archivo de configuracion, seteando logger, formatter, handler de manera "manual", dentro del mismo dag
- con archivo de configuracion
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
-
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'
se optó entre:
- dags factory + yaml
- genrator.py + template.jinja2 + yaml
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.