Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
164 commits
Select commit Hold shift + click to select a range
c76ee1d
add dag file UNflores
dipaolme Nov 3, 2022
912f5e2
Scripts sql para las consultas a la BD de las universidades
elalfredoignacio Nov 3, 2022
0e048f6
prueba
FranciscoCambiagno Nov 3, 2022
6c5e0c1
extract function added
dipaolme Nov 4, 2022
18e67c8
Grupo B sprint1
BROC95 Nov 5, 2022
cc50cb9
Datos csv GB
BROC95 Nov 5, 2022
7e38cd7
Sprint 1 - Tarea 2
elalfredoignacio Nov 6, 2022
f6c1512
Sprint 1 - Tarea 2 (update)
elalfredoignacio Nov 6, 2022
6b0b2d8
Create logging_module.py
elalfredoignacio Nov 6, 2022
c9a25c4
Grupo B
BROC95 Nov 7, 2022
5885d29
Grupo B
BROC95 Nov 7, 2022
27203ae
upload sql files, update dags task extract
dipaolme Nov 7, 2022
18fdaa2
upload csv
dipaolme Nov 7, 2022
bdd48fb
hook conn
BROC95 Nov 7, 2022
5520e4c
logger by un
BROC95 Nov 8, 2022
be3a68a
Archivos sql listos
FranciscoCambiagno Nov 9, 2022
46f35dd
Transform function pandas
BROC95 Nov 9, 2022
1ae6601
change name, queries in sql files
dipaolme Nov 9, 2022
82e0b0b
Load S3 amazon
BROC95 Nov 9, 2022
158783a
TaskLoad
BROC95 Nov 9, 2022
af605af
Archivos resultantes del procesamiento
elalfredoignacio Nov 9, 2022
4c366f5
Nueva version de los DAG con E+T
elalfredoignacio Nov 9, 2022
87a1bc3
update .env
BROC95 Nov 10, 2022
0b6d87e
Merge pull request #1 from BROC95/grupoB
BROC95 Nov 10, 2022
b3fc451
bucket
BROC95 Nov 10, 2022
59e216f
update .env
BROC95 Nov 10, 2022
ebde1c2
mod .env
BROC95 Nov 10, 2022
f6d9834
config .env
BROC95 Nov 10, 2022
ec2440f
Dag dynamic
BROC95 Nov 10, 2022
98e23b8
update .env
BROC95 Nov 10, 2022
57ff106
Dag dynamic .env
BROC95 Nov 10, 2022
ad675e0
update .env
BROC95 Nov 10, 2022
4ffedc6
update .env
BROC95 Nov 10, 2022
aad6e31
update .env
BROC95 Nov 10, 2022
eab3546
Nueva versión de DAGs con agregado de task de Load
elalfredoignacio Nov 10, 2022
62429ec
dag factory
BROC95 Nov 11, 2022
e245275
dag factory
BROC95 Nov 11, 2022
c2c1feb
dags files update
dipaolme Nov 11, 2022
f751e5f
upload logs
dipaolme Nov 11, 2022
1f23b82
upload processed txt
dipaolme Nov 11, 2022
5723a77
upload csv files
dipaolme Nov 11, 2022
a898453
Update README.md
dipaolme Nov 12, 2022
9d74ef7
notebook v1
BROC95 Nov 12, 2022
208f69c
Update README.md
dipaolme Nov 12, 2022
472701a
Modificacion en transformacion en Pandas
elalfredoignacio Nov 12, 2022
e799d43
update data
BROC95 Nov 12, 2022
dee6392
Update README.md
dipaolme Nov 12, 2022
d1e15c8
update notebook
BROC95 Nov 12, 2022
587bdd8
update notebook
BROC95 Nov 12, 2022
e0bd0e2
DAGs con LOGs
elalfredoignacio Nov 12, 2022
1622dba
add grupo B link github
BROC95 Nov 12, 2022
d90c893
update assets
BROC95 Nov 12, 2022
3e8e6b5
Update notebook
BROC95 Nov 12, 2022
aa4bd6e
Dags dinamicos
elalfredoignacio Nov 13, 2022
8ca6603
ETL
BROC95 Nov 13, 2022
4734c9e
Merge pull request #3 from dipaolme/BROC95-patch-1
dipaolme Nov 13, 2022
ea77c19
Create GE_storytelling.ipynb
elalfredoignacio Nov 14, 2022
7c4363f
Revert "Create GE_storytelling.ipynb"
elalfredoignacio Nov 14, 2022
60e4f05
Revert "Revert "Create GE_storytelling.ipynb""
elalfredoignacio Nov 14, 2022
0f8fb54
Notebook con storytelling
elalfredoignacio Nov 14, 2022
c62b8c6
paso la notebook a assets/notebooks
elalfredoignacio Nov 14, 2022
004a873
archivos sql
Nov 14, 2022
2267627
Notebook
Nov 14, 2022
b8505fb
Update README.md
murillowilmar1 Nov 14, 2022
f79333a
Update README.md
murillowilmar1 Nov 14, 2022
b252e8c
Update README.md
murillowilmar1 Nov 14, 2022
9c42243
GrupoH
sanchez99andres Nov 14, 2022
be327d2
Dags terminados, error de indentacion
FranciscoCambiagno Nov 14, 2022
3c90090
Add files via upload
slash-w Nov 14, 2022
44d43f1
archivos
Nov 14, 2022
8bb918e
Merge branch 'grupoI' of https://github.com/dipaolme/Skill-Up-DA-c-Py…
Nov 14, 2022
e603db1
Delete GIUJujuy.py
murillowilmar1 Nov 14, 2022
5dc55b6
Delete GIUMoron.py
murillowilmar1 Nov 14, 2022
67b40f6
dags
Nov 14, 2022
b9d7c83
dags
Nov 14, 2022
ccaf884
fix minors errors
dipaolme Nov 14, 2022
2e24985
dynamic dags
dipaolme Nov 14, 2022
c0245bc
upload notebook
dipaolme Nov 14, 2022
64c0012
Merge pull request #5 from dipaolme/grupoA
BROC95 Nov 14, 2022
621f07e
update name GB
BROC95 Nov 14, 2022
404edfa
Merge branch 'master' of https://github.com/dipaolme/Skill-Up-DA-c-Py…
BROC95 Nov 14, 2022
96a1797
folders
BROC95 Nov 14, 2022
ec418bc
folders
BROC95 Nov 14, 2022
3ca6d7c
Actulización
Nov 14, 2022
3e58119
actualización2
Nov 14, 2022
3e30db3
notebook
Nov 14, 2022
bd5fbc5
notebook2
Nov 14, 2022
0c074f5
Merge pull request #6 from dipaolme/grupoB
elalfredoignacio Nov 14, 2022
3f43343
Merge pull request #7 from dipaolme/grupoI
BROC95 Nov 14, 2022
db517ad
Actualizacion de archivos
elalfredoignacio Nov 15, 2022
97a8a5d
Update README.md nombre Francisco
FranciscoCambiagno Nov 15, 2022
982fe59
archivo de prueba pa.txt eliminado
FranciscoCambiagno Nov 15, 2022
b296c80
Actualización de notebook con storytelling
elalfredoignacio Nov 15, 2022
94b851f
Merge pull request #9 from dipaolme/grupoE
BROC95 Nov 15, 2022
506c07c
Merge pull request #8 from dipaolme/FranciscoCambiagno-patch-1
BROC95 Nov 15, 2022
381e911
Logs agregados en los dags
FranciscoCambiagno Nov 16, 2022
0cdeeb9
Dags dinamicos
FranciscoCambiagno Nov 16, 2022
5309786
Update GAUNFlores_dag_etl.py
dipaolme Nov 16, 2022
2bf3f22
Update and rename GAUNFlores_dag_etl.py to GAUFlores_dag_etl.py
dipaolme Nov 16, 2022
1954b03
Update config_GAUFlores.yaml
dipaolme Nov 16, 2022
c152b68
Update template_dags_GRUPOA.jinja2
dipaolme Nov 16, 2022
cfcfd58
Update README.md
dipaolme Nov 16, 2022
e206cc6
Update README.md
dipaolme Nov 16, 2022
d13e346
Update README.md
dipaolme Nov 16, 2022
8ed250f
Delete assets/Notebooks directory
elalfredoignacio Nov 16, 2022
669e0a5
Add files via upload
elalfredoignacio Nov 16, 2022
1f14d78
Created using Colaboratory
slash-w Nov 16, 2022
737fee8
Delete assets/Notebooks directory
dipaolme Nov 16, 2022
65a6a75
Merge pull request #10 from dipaolme/grupoE
dipaolme Nov 16, 2022
9fc76c4
Add files via upload
slash-w Nov 16, 2022
f4d4b96
Add files via upload
slash-w Nov 16, 2022
bb3b1e1
Delete dags/dynamic_dags directory
slash-w Nov 16, 2022
444914c
Add files via upload
slash-w Nov 16, 2022
cd481ad
Delete GrupoF.ipynb
slash-w Nov 16, 2022
f5f6311
Update All
sanchez99andres Nov 17, 2022
371bd44
"Delete .txt files"
sanchez99andres Nov 17, 2022
e1869b3
Delete .txt files
sanchez99andres Nov 17, 2022
4c3a48a
Remove files
sanchez99andres Nov 17, 2022
0928fb9
Merge pull request #11 from dipaolme/grupoC
dipaolme Nov 17, 2022
2756750
Commit
sanchez99andres Nov 17, 2022
a573708
commit 16-11
sanchez99andres Nov 17, 2022
3f5cdb6
Merge pull request #13 from dipaolme/GrupoH
dipaolme Nov 17, 2022
8d012f5
merged to master
slash-w Nov 17, 2022
7613a29
merged de nuevo
slash-w Nov 17, 2022
2102852
Merge pull request #14 from dipaolme/grupoF
dipaolme Nov 17, 2022
7fb2a48
Update README.md
dipaolme Nov 17, 2022
aaff159
Subiendo txts grupoC
FranciscoCambiagno Nov 17, 2022
45246e4
Update README.md
dipaolme Nov 17, 2022
c4c8267
Update README.md
dipaolme Nov 17, 2022
4a59d64
Update README.md
dipaolme Nov 17, 2022
8aca358
Merge pull request #17 from dipaolme/FranciscoCambiagno-patch-1
dipaolme Nov 17, 2022
c2900f3
Update README.md
dipaolme Nov 17, 2022
a66b80c
Update README.md
dipaolme Nov 17, 2022
e47a07c
Update README.md
dipaolme Nov 17, 2022
e5fba07
Delete .gitignore
dipaolme Nov 17, 2022
be49a6d
Delete .env
dipaolme Nov 17, 2022
be9ad1a
Delete requirements.txt
dipaolme Nov 17, 2022
a2ca536
Delete GFUMMoron_process.txt
slash-w Nov 17, 2022
3f68466
Delete GFUNRioCuarto_process.txt
slash-w Nov 17, 2022
9c2f3eb
Add files via upload
slash-w Nov 17, 2022
77da9c4
Merge pull request #20 from dipaolme/slash-w-patch-3
dipaolme Nov 17, 2022
bfb8417
Merge pull request #19 from dipaolme/slash-w-patch-2
dipaolme Nov 17, 2022
7bce3a8
Merge pull request #21 from dipaolme/slash-w-patch-4
dipaolme Nov 17, 2022
d58125a
delete folder
slash-w Nov 17, 2022
307653a
Delete GAUNflores_select.csv
dipaolme Nov 17, 2022
5920b0b
grupof dyn dags
slash-w Nov 17, 2022
89e6789
Delete my_example_dag.py
dipaolme Nov 17, 2022
79cbfa4
Merge pull request #23 from dipaolme/slash-w-patch-7
dipaolme Nov 17, 2022
a0ebc38
Merge pull request #22 from dipaolme/slash-w-patch-6
dipaolme Nov 17, 2022
23c4c11
dags
slash-w Nov 17, 2022
b306e2a
Actualizacion manual .csv
FranciscoCambiagno Nov 17, 2022
427952f
Merge pull request #24 from dipaolme/slash-w-patch-8
dipaolme Nov 17, 2022
cf34fb8
Merge pull request #25 from dipaolme/FranciscoCambiagno-patch-1
dipaolme Nov 17, 2022
27ad9cc
Delete dag_UMMoron.py
dipaolme Nov 17, 2022
2bb31f2
Delete dag_UNRioCuarto.py
dipaolme Nov 17, 2022
d78c1f9
Update README.md
dipaolme Nov 17, 2022
c4f32c3
Update README.md
dipaolme Nov 17, 2022
df25a9c
Delete dags/dags_dynamic/GrupoF directory
dipaolme Nov 17, 2022
f9f6ae8
dags dyn
slash-w Nov 17, 2022
d38e18b
Add files via upload
slash-w Nov 17, 2022
99b54bb
Merge pull request #28 from dipaolme/slash-w-patch-11
dipaolme Nov 17, 2022
7ed6513
Merge pull request #27 from dipaolme/slash-w-patch-10
dipaolme Nov 17, 2022
dab661a
Add files via upload
FranciscoCambiagno Nov 20, 2022
c08bb9b
Merge pull request #29 from dipaolme/FranciscoCambiagno-patch-1
dipaolme Nov 23, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
201 changes: 27 additions & 174 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,33 @@
# Proyecto #1 Flujos de ejecución
## Descripción
# Skill-Up-DA-c-Python

Repositorio del proyecto grupal a entregar que se llevo a cabo durante la aceleracion de Alkemy durante Noviembre 2022

## Grupo 1 - AstroData

## Integrantes y grupos asignados

- [Alfredo Rodríguez](https://github.com/elalfredoignacio) - Grupo E
- [Breyner Ocampo Cardenas](https://github.com/BROC95) - Grupo B
- [Di Paola, Matias](https://github.com/dipaolme) - Grupo A
- [Francisco Ezequiel Cambiagno](https://github.com/FranciscoCambiagno) - Grupo C
- [Juan Santiago Nicotra](https://github.com/slash-w) - Grupo F
- [Wilmar Murillo Carmona](https://github.com/murillowilmar1) - Grupo I

## Objetivo

- Implementar un flujo de ejecución que ejecute un proceso ETL (extraccion, transformacion, carga) utilizando datos de Universidades Argentinas
- Realizar comparaciones y generar KPIs de los datos previamente transformados


## Contexto
Client: Ministerio de Educación de la Nación
Situación inicial
📍

Somos un equipo de desarrollo y data analytics, que trabajamos para la consultora “MyData”
y nuestro líder técnico nos comparte un pedido comercial directamente del Consejo Nacional
de Calidad de la Educación (por sus siglas, CNCE).

El CNCE es un grupo deliberante que pertenece al Ministerio de Educación de la Nación
Argentina.

Este se encuentra analizando opciones universitarias disponibles en los últimos 10
años para comparar datos extraídos de universidades de todo el país, públicas y privadas,
con el fin de tener una muestra representativa que facilite el análisis.
Expand All @@ -19,182 +37,17 @@ El CNCE requiere que preparemos el set de datos para que puedan analizar la info
relevante y tomar directrices en cuanto a qué carreras universitarias requieren programa de
becas, qué planes de estudios tienen adhesión, entre otros.

### Tu objetivo

📋 Como parte de un equipo de desarrollo y data analytics de “MyData”, deberás analizar y
preparar flujos de ejecución del set de datos recibido para obtener las comparaciones y
mediciones requeridas por el CNCE.

#### Requerimientos 🔧
## Requerimientos

El Ministerio necesita que ordenemos los datos para obtener un archivo con sólo la
- El Ministerio necesita que ordenemos los datos para obtener un archivo con sólo la
información necesaria de cierto periodo de tiempo y de determinados lugares
geográficos de una base de datos SQL (las especificaciones serán vistas en la primera
reunión de equipo). Será necesario generar un diagrama de base de datos para que se
comprenda la estructura.


● Los datos deben ser procesados de manera que se puedan ejecutar consultas a dos
- Los datos deben ser procesados de manera que se puedan ejecutar consultas a dos
universidades del total disponible para hacer análisis parciales. Para esto será
necesario realizar DAGs con Airflow que permitan procesar datos con Python y
consultas SQL.


● Calcular, evaluar y ajustar formatos de determinados datos como fechas, nombres,
- Calcular, evaluar y ajustar formatos de determinados datos como fechas, nombres,
códigos postales según requerimientos normalizados que se especifican para cada
grupo de universidades, utilizando Pandas.

### Assets 🎨


La base de datos con la información que reunió el Ministerio de Educación se proveerá en el transcurso del proyecto.


El archivo auxiliar de códigos postales se encuentra en la carpeta assets.


## Requerimientos:
# Airflow usando Docker
https://docs.astronomer.io/software/install-cli?tab=windows#install-the-astro-cli

## Modulos utilizados en Python
- pathlib
- logging
- pandas
- datetime
- os
- sqlalchemy

## Estructura y flujo de ejecución
Se generarán archivos ".sql" con las consultas correspondientes a cada centro educativo, normalizando las columnas tenidas en cuenta.

Mediante operadores disponibles en apache airflow (Python operators y postgre operators, se toman las consultas ".sql" para obtener los datos de la base de datos provista.

Estos datos se transorman mediante la libreria pandas, y se almacenan en forma local como archivos ".txt".

Finalmete, a traves de las herramientas provistas por AWS (operadores y hooks S3), los datos almacenados como ".txt" son transformados a strings, y almacenados en el servicio S3.

# Creación de una Wiki del proyecto
Se recomienda crear una wiki del proyecto en Github para dejar anotaciones, lecciones aprendidas o convenciones necesarias adicionales.

# **Convención para nombrar carpetas**

OT000-python

-airflow

-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.

EJ: GFUNRioCuarto_dag_etl.py


# **Convencion para el nombre de la base de datos**

### conexion con base de datos
se llamara 'alkemy_db'

### conexion para S3
se llamara 'aws_s3_bucket'

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

EJ: GFUNRioCuarto_select.csv

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

EJ: GFUNRioCuarto_process.txt

# MATERIAL COMPLEMENTARIO

# AIRFLOW

https://airflow.apache.org/

# Informacion importante de como comenzar con Airflow
https://www.astronomer.io/guides/airflow-sql-tutorial/

# Curso de Alkemy de Airflow
https://academy.alkemy.org/curso/python/contenidos/clase-1-introduccion-a-flujos-de-trabajo

# Guía definitiva de Airflow
[Guia](https://www.astronomer.io/ebooks/dags-definitive-guide.pdf)

# Airflow Hooks Explained 101
https://hevodata.com/learn/airflow-hooks/

# Create a S3 bucket into AWS.
https://docs.aws.amazon.com/es_es/elastictranscoder/latest/developerguide/gs-2-create-s3-buckets.html

Create a S3 bucket and call it as you want.

![image](https://user-images.githubusercontent.com/2921066/194301926-a98e757b-d618-432c-b103-98a2e91a563c.png)

## Structure of S3 bucket
This is an important part, as I follow a specific folder structure in python scripts. Define the structure as follow:

![image](https://user-images.githubusercontent.com/2921066/194302089-19e765a9-ef40-4245-9bbc-a53b2f0080e3.png)

After create the s3 bucket, upload into the folder "preprocess/" the csv file that is located in the root path "talks_info.csv".

## S3 IAM user
In order to be able to interact with the S3 bucket, we have to create an user (or use an existing one).

![image](https://user-images.githubusercontent.com/2921066/194302165-2ce84708-2f99-4669-a013-d1ff17558f0f.png)

## Permissions for the user
Since we have many services and specific permissions to interact with them, we have to assign the S3 permission to the new user.

![image](https://user-images.githubusercontent.com/2921066/194302244-d96f0220-34f6-4eb2-97cc-05db9fc0d7f2.png)

## Credentials
This is a very important step. You have to make sure of copy and save the credentials because we will use them later.

![image](https://user-images.githubusercontent.com/2921066/194302285-47cbb07e-4128-40f3-aabd-0c7c3a276831.png)

# Instalar providers de amazon
https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/index.html
# Documentacion de amazon s3 en airflow
https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/_api/airflow/providers/amazon/aws/hooks/s3/index.html


# From Local Filesystem to Amazon S3
https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/operators/transfer/local_to_s3.html

## Quickstart AWS SDK for Python.
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html


## How to use Boto3 to upload files to an S3 Bucket?
https://www.learnaws.org/2022/07/13/boto3-upload-files-s3/


# Airflow Dynamic DAGs: The powerful way with Jinja and YAML
https://www.youtube.com/watch?v=HuMgMTHrkn4&ab_channel=DatawithMarc

# Dynamically Generating DAGs in Airflow
https://www.astronomer.io/guides/dynamically-generating-dags/

# Loggers

# Configuración del archivo de logger.cfg
https://docs.python.org/3/library/logging.config.html#logging-config-fileformat

# Ejemplo de archivo de configuración
https://realpython.com/lessons/logger-config-file/


41 changes: 41 additions & 0 deletions assets/GBUNComahue_dag_elt.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[loggers]
keys=root,GBUNComahue_dag_elt

[handlers]
keys=consoleHandler

[formatters]
keys=detailedFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_GBUNComahue_dag_elt]
level=DEBUG
handlers=consoleHandler
qualname=GBUNComahue_dag_elt
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=detailedFormatter
args=(sys.stdout,)

[handler_simpleHandler]
formatter=simpleFormatter
class=handlers.RotatingFileHandler
maxBytes=31457280
level=DEBUG
args=('/tmp/test.log',)


[formatter_detailedFormatter]
# format=%(asctime)s - %(name)s - %(levelname)s / %(message)s
format=%(asctime)s - %(name)s - %(message)s
datefmt='%Y-%m-%d'




41 changes: 41 additions & 0 deletions assets/GBUNSalvador_dag_elt.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[loggers]
keys=root,GBUNSalvador_dag_elt

[handlers]
keys=consoleHandler

[formatters]
keys=detailedFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_GBUNSalvador_dag_elt]
level=DEBUG
handlers=consoleHandler
qualname=GBUNSalvador_dag_elt
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=detailedFormatter
args=(sys.stdout,)

[handler_simpleHandler]
formatter=simpleFormatter
class=handlers.RotatingFileHandler
maxBytes=31457280
level=DEBUG
args=('/tmp/test.log',)


[formatter_detailedFormatter]
# format=%(asctime)s - %(name)s - %(levelname)s / %(message)s
format=%(asctime)s - %(name)s - %(message)s
datefmt='%Y-%m-%d'




Loading