¡Bienvenidos al primer proyecto individual de la etapa de labs! En esta ocasión, deberán hacer un trabajo situándose en el rol de un Data Engineer.
Application Programming Interface
es una interfaz que permite que dos aplicaciones se comuniquen entre sí, independientemente de la infraestructura subyacente. Son herramientas muy versátiles que permiten por ejemplo, crear pipelines facilitando mover y brindar acceso simple a los datos que se quieran disponibilizar a través de los diferentes endpoints, o puntos de salida de la API.
Hoy en día contamos con FastAPI, un web framework moderno y de alto rendimiento para construir APIs con Python.
Como parte del equipo de data de una empresa, el área de análisis de datos le solicita al área de Data Engineering (usted) ciertos requerimientos para el óptimo desarrollo de sus actividades. Usted deberá elaborar las transformaciones requeridas y disponibilizar los datos mediante la elaboración y ejecución de una API.
Transformaciones
: El analista de datos requiere estas, y solo estas, transformaciones para sus datos:
-
Generar campo
id
: Cada id se compondrá de la primera letra del nombre de la plataforma, seguido del show_id ya presente en los datasets (ejemplo para títulos de Amazon =as123
) -
Los valores nulos del campo rating deberán reemplazarse por el string “
G
” (corresponde al maturity rating: “general for all audiences” -
De haber fechas, deberán tener el formato
AAAA-mm-dd
-
Los campos de texto deberán estar en minúsculas, sin excepciones
-
El campo duration debe convertirse en dos campos:
duration_int
yduration_type
. El primero será un integer y el segundo un string indicando la unidad de medición de duración: min (minutos) o season (temporadas)
Desarrollo API
: Para disponibilizar los datos la empresa usa el framework FastAPI. El analista de datos requiere consultar:
-
Cantidad de veces que aparece una keyword en el título de peliculas/series, por plataforma
-
Cantidad de películas por plataforma con un puntaje mayor a XX en determinado año
-
La segunda película con mayor score para una plataforma determinada, según el orden alfabético de los títulos.
-
Película que más duró según año, plataforma y tipo de duración
-
Cantidad de series y películas por rating
Deployment
: La empresa suele usar Deta (no necesita dockerizacion) para realizar el deploy de sus aplicaciones. Sin embargo, también puede usar Railway y Render (necesitan dockerizacion).
Video
: El Tech Lead que le delegó esta tarea quiere darle un feedback sobre el trabajo realizado. Para esto, le pide que sintetice en un video de 5 minutos su trabajo resaltando cómo ayuda el mismo a los analistas de datos.
Spoiler: Para lograr esto DEBE mostrarle al TL las consultas requeridas en funcionamiento desde la API.
Código
: Prolijidad de código, uso de clases y/o funciones, en caso de ser necesario, código comentado.
Repositorio
: Nombres de archivo adecuados, uso de carpetas para ordenar los archivos, README.md presentando el proyecto y el trabajo realizado
Cumplimiento
de los requerimientos de aprobación indicados en el apartado Propuesta de trabajo
NOTA: Recuerde entregar el link de acceso al video. Puede alojarse en YouTube, Drive o cualquier plataforma de almacenamiento. Verificar que sea de acceso público.
- Podrán encontrar los archivos con datos en la carpeta Datasets, en este mismo repositorio.*
Imagen Docker con Uvicorn/Guinicorn para aplicaciones web de alta performance:
FAST API Documentation:
"Prolijidad" del codigo:
-
Apertura de formularios de entrega de proyectos: Miercoles 18, 15:00hs gmt -3
-
Cierre de formularios de entrega de proyectos: Viernes 20, 12:00hs gmt-3
-
Demo por parte del estudiante: Viernes 20, 16:00hs gmt-3
(Se escogera entre l@s estudiantes aquel que represente de forma global todos los criterios de evaluacion esperados, para que sirva de inspiracion a sus compañer@s)
De parte del equipo de Henry se aclara y remarca que el fin de los proyectos propuestos es exclusivamente pedagógico, con el objetivo de realizar simular un entorno laboral, en el cual se trabajan diversas temáticas ajustadas a la realidad. No reflejan necesariamente la filosofía y valores de la organización. Además, Henry no alienta ni tampoco recomienda a los alumnos y/o cualquier persona leyendo los repositorios (y entregas de proyectos) que tomen acciones con base a los datos que pudieran o no haber recabado. Toda la información expuesta y resultados obtenidos en los proyectos nunca deben ser tomados en cuenta para la toma real de decisiones (especialmente en la temática de finanzas, salud, política, etc.).