-
Notifications
You must be signed in to change notification settings - Fork 1
Conventions
En este apartado estableceremos las convenciones con el objetivo de establecer un marco de trabajo.
Se decidió adoptar la estructura de archivos utilizada por la plataforma Astronomer (más info: https://www.astronomer.io/guides/airflow-sql-tutorial/).

Se agrega a la estructura del proyecto:
- Folder
assets, donde irán archivos suplementarios que no produjimos nosotros, por ejemplo el .csv de codigo postal y ciudades. - Folder
datasets, donde irán los .csv que transformamos con pandas. - Folder
files, donde irán los .csv que son fiel imagen de lo que extrajimos de postgres. - Folder
plugins\dynamic_dags, contiene archivos necesarios para el uso de los dynamic dags: - LETRAGRUPO_config_uni_nombre_de_universidad.yaml < archivo de configuración especifico de cada universidad - LETRAGRUPO_generators.py < archivo generador de los dags dinamicos - LETRAGRUPO_template.jinja2 < archivo jinja con el template de como se debe diseñar el dag
LETRAGRUPO_uni_nombre_de_la_universidad.sql
- university
- career
- inscription_date
- first_name
- last_name
- gender
- birth_date
- age
- postal_code
- location
Nota: Se llenarán con NULLs aquellas columnas cuyos valores no se encuentren en la fuente de información.
LETRAGRUPO_uni_nombre_de_la_universidad.py
Para la tarea "Configurar un DAG, sin consultas, ni procesamiento", se debe diseñar el DAG.
Para esto definiremos funciones de Python vacías y utilizaremos PythonOperators que ejecutarán estas funciones para cumplir las tareas del DAG.
Se debe documentar que operators se utilizarán en el futuro para realizar dichas tareas.
- Cantidad de retries: 5
- Intervalo de retries: 5 segundos
- Start date: (por definir)
- postgres_conn_id = "db_universidades_postgres"
- conexión a S3 = "universidades_S3"

Descripción de cada carpeta:
-
Folder
datasets: se encuentra el archivo .xml de _posts _en Stack. -
Folder
libs: se encuentra la librería chunckify.py. También iremos guardando todas las librerías personales que generemos, bajo el nombre: "LETRAGRUPO_nombre_librería.py" -
Folder
logs: contiene archivos .cfg para la configuraciones de logs de cada grupo de datos. Se guardan bajo el nombre: "LETRAGRUPO_logger.cfg". -
Folder
notebooks: contiene las Jupyter Notebooks donde se realizarán análisis más profundos y visualizaciones sobre los .csv de la carpeta output. Se genera un archivo .ipynb por cada requerimiento y se guardan bajo el nombre "LETRA_GRUPO_descripcion_requerimiento.ipynb", por ej: "D_top10_preguntas_mayor_actividad.ipynb". -
Folder
output: contiene los archivos .csv generados por los archivos .py de la carpeta src. Se genera un archivo .csv por cada requerimiento y se guardan bajo el nombre "LETRA_GRUPO_descripcion_requerimiento.csv", por ej: "D_top10_preguntas_mayor_actividad.csv". -
Folder
src: contiene los archivos fuente .py que ejecutarán la lógica MapReduce para procesar todos los grupos de datos, y cada uno de sus requerimientos. Se utiliza un archivo .py por cada requerimiento y se guardan bajo el nombre "LETRA_GRUPO_descripcion_requerimiento.py", por ej: "D_top10_preguntas_mayor_actividad.py".
Extraído del archivo readme.txt que nos facilita Stack Overflow.
- Nivel mínimo de logueo: DEBUG
- Número de
loggers: - Número de
handlers: - Número de
formatters: