Realizado por:
- Douglas Ardila Garces
- Andres Felipe Avendaño
- Julian Andres Sanchez
- Sebastian Ospina Cabarcas
Documentacion proceso ETL sobre la base de datos relacional Sakila
Se tiene un archivo de formato JSON con datos semi-estructurados de diferentes paises, el objetivo es extraer los datos de este archivo y complementar la tabla country de sakila
Primero definimos el "que", que es lo que se va a hacer para poder "unificar" ambas estructuras.
- Entender como funcionan las estructuras
- Entender las fuentes
- Extraerla
- Transformar de json a una tabla
- Comparar y complementarlas
- Unificar
- Agregar tabla a sakila
Para llevar a cabo lo anterior creamos un pequeño script en python utilizando la libreria pandas
Consultas para unificar y crear una sola tabla country, consultas sobre agregaciones y vistas
- ¿Cuál fue el cliente que más rentó por mes en el año 2006?
- ¿Cuál fue el genero de pelicula mas rentado en los meses de octubre de cada año?
- ¿Cual es el rental_rate de las películas top más rentadas en los últimos 2 años?
- ¿Que películas son las que menos se han rentado en los últimos 2 años?
- ¿En qué fechas del mes se realizan menos rentas de acuerdo a los últimos 3 años?
- ¿Cual es la pelicula mas rentada por país en abril del 2005?
- ¿Cual es el top 10 de clientes y cuales son los meses en que ellos menos rentan?
- ¿Cuales clientes son los que más han rentado y en qué género?
- ¿Qué tienda ha tenido el mayor número de rentas en el último año?
- ¿Cual es el cliente más fiel (mayor número de rentas por mes)?
- De la tabla customer tomamos tal cual los siguientes campos para construir la dimension dimCustomer y asi poder responder las preguntas del negocio planteadas anteriormente: customer_id first_name, last_name, email. Y desnormalizamos las tablas address, city y country, para asi obtener los siguientes campos: address_cus, city_cus, country_cus y district_cus.
- De la tabla store tomamos tal cual el campo de store_id para construir la dimension dimStore y desnormalizamos las tablas address, city y country, para asi obtener los siguientes campos: address_store, city_store, country_store y district_store.
- De la tabla film tomamos tal cual los siguientes campos para construir la dimension dimFilm y asi poder responder las preguntas del negocio planteadas anteriormente: film_id, title y rental_rate. Y desnormalizamos las tablas category y language, para asi obtener los siguientes campos: name_category y name_language.
- Creamos la dimension tiempo a partir del campo rental_date de la tabla rental y obtuvimos los siguientes campos: fecha, año, dia, mes, semana_del_año, dia_del_años, hora, minuto, segundo, semestre, bimestre, trimestre.
- Para la tabla de hechos factRental se calcularon los siguientes campos cantidad_rentas_dia, cantidad_rentas_mes.
Creamos el esquema de la nueva base de datos sakilaOlap
Procedures para llenar las tablas de dimension y hechos