- P1:
- P2: Link
- P3:
Los datos proporcionados representan informacion relevante a los viajes en el servicio de Taxis de la ciudad de Nueva York en los últimos años, recaudados por la compañia NYC Taxi and Limousine Commission (https://drive.google.com/file/d/1NK96l1cQvVUjpmaAqmEpHPZ4dtgaZjRT/view).
Se implemento un R-Tree para soportar la siguiente consulta:
- Dada la posición de dos puntos P1 y P2 que representan una región rectangular, retornar los viajes que comenzaron en tal región. Considerar, además, que la posición de un punto está determinada por la latitud y longitud de las coordenadas que representa.
Un R-Tree es un árbol indexado que permite agrupar a los elementos según su proximidad. Para ello, divide el espacio creando regiones (Bounding Boxes y para esta implementación en concreto: Bounding Rectangles), de forma que la repetición de elementos en estas sea mínima.
La arquitectura propuesta es la siguiente:
Los servicios de AWS que utilizarian serian:
- Api Gateway: Para poder levantar el lambda de acuerdo a un request
- Lambda: Para poder levantar una maquina ecs a demanda
- AWS Fargate: Levantar la imagen docker del ETL
- S3: Almacenar los archivos por la maquina del Fargate
Se utilizan las herramientas de AWS para poder generar una ejecución a demanda del proceso de descarga y procesamiento de los archivos fuente de la data.
Después estos archivos son subidos al ecosistema de snowflake, en donde son almacenados en formato sql para luego ser usados con la integración de streamlit para poder visualizar la data de acuerdo a las queries hechas.
Los archivos descargados se están almacenando en bucket s3 particionados por año y mes. Estos archivos están en formato csv.
Usando los conectores de Snowflake podemos cargar la data del s3 hacía la tabla generada en el datawarehouse.
Esta data luego es almacenada en la tabla creada en snowflake.
Finalmente con la data en snow podemos conectarla a la aplicación de streamlit para poder visualizar y finalmente hacer consultas.