En la Plataforma de Google Cloud, se utilizó Cloud Storage en el cual se establecieron 4 buckets.
- Bucket
data_cruda
: donde se encuentra la data proporcionada por el cliente - Bucket
data_limpia
: almacena toda la data limpia producto del proceso ETL completo sumado a la data nueva limpia que llegue - Bucket
carga_incremental
: posee 2 carpetas:- data_historica: posee 2 archivos (Google y Yelp), donde se tiene los id nuevos que se ha recibido tanto de Google como Yelp agregándole una columna a la data llamada
fecha_actual
- Google: se almacenan los archivos temporales con data nueva de Google (una vez agrega a BigQuery, los archivos son eliminados)
- Yelp: se almacenan los archivos temporales con data nueva de Yelp (una vez agrega a BigQuery, los archivos son eliminados)
- data_historica: posee 2 archivos (Google y Yelp), donde se tiene los id nuevos que se ha recibido tanto de Google como Yelp agregándole una columna a la data llamada
- Bucket
data_extraccion
: el cual recibirá toda los archivos nuevos semanalmente.
Se establecieron tablas linkeadas para representar las relaciones entre entidades. Por ejemplo:
- Un negocio o restaurante puede tener asociada varias categorías (Yelp:
bus_cat
, Google:linked_category
) - Un negocio o restaurante puede tener asociada varias categorías de artículos no esenciales para la comida principal (Google:
linked_miscellaneous
)
El Data Warehouse se creó a través de BigQuery, el cual recibe los archivos del bucket "carga_incremental" luego del proceso ETL retornando 2 schemas uno llamado "Tabla_Google" y otro "Tabla_Yelp". De los cuales cada uno de ellos está conformado por las distintas tablas expresadas en el modelo ER.
Por lo tanto, a través de estos schemas se puede extraer la información con consultas SQL, conectándose al cliente de Big Query.
Para automatizar el proceso ETL cada vez que llegue data nueva al bucket "data_extraccion", se crearon dos funciones en Cloud Functions llamadas "etl-yelp" y "etl-google", las cuales se ejecutan una vez que son llamadas por Cloud Scheduler (actúa como temporizador) semanalmente.
Si deseas reutilizar las funciones así como los temporizadores, considera las siguientes configuraciones (pueden variar dependiendo de tus requerimientos)
-
Google Function
- Environment: 2nd gen - Solo HTTP como trigger (Opción --> Require authentication Manage authorized users with Cloud IAM.) - Memory allocated 4 GiB - CPU 2 - Timeout 200 seconds
-
Google Scheluder
Define the schedule - Nombre/Descripcion/Region - Frecuency (every 3 hours: "0 */3 * * *", every Monday at 9:00: "0 9 * * 1") - Timezone (ARG) Configure the execution - Target type (HTTP) - URL (de la funcion) - HTTP method ---> POST