Creación del modelo dimensional en estrella con el reto 5 fp20analytics

      Hola muy buenos días , tardes o noches, hoy crearemos un modelo estrella con  el reto numero 5 de fp20analytics.

Por acá comparto el link para los que desean acceder: https://fp20analytics.com/challenge

 

En este proceso se está trabajando en la creación de un modelo dimensional en estrella mediante la selección de columnas candidatas para crear la dimensión. Este modelo es recomendado en la práctica de modelado de datos eficaz y eficiente. Se utiliza una estrategia de selección de columnas numéricas o que se usarán para contabilizar y sumar debido a su alta aditividad.

A continuación, se detallan los pasos del proceso, que incluyen la creación de consultas para las dimensiones seleccionadas, la creación de tablas para cada dimensión, la inserción de datos únicos en las tablas de dimensión, la creación de una consulta para la tabla de hechos utilizando varios left joins con las tablas de dimensión, y la revisión de la tabla de fechas. En la tabla resultante, se encuentra la tabla de hechos junto con las tablas de dimensión creadas en el proceso.

 

Siguiendo las buenas practicas de un modelado de datos eficaz y sobre todo eficiente, apuntamos a que sea un modelo en estrella el que crearemos el día de hoy.

Así que seleccionaremos las columnas candidatas para crear el modelo dimensional  las cuales serán las de texto dado que lo aconsejable es dejar solo las columnas de tipo numero o que se usaran para contabilizar y sumado a ello son de alta aditiva.

 

Paso 1) Creación de las consultas de las dimensión seleccionadas

–Creamos la consulta los paises únicos para obtener solo los datos únicos de la columna

select distinct(country) from stage

 

–Creamos la tabla dim_country  con el id que nos servirá para crear las primero la llave primaria de la dimensión y que esta sea la foránea de la de hechos

create table dim_country

(

id serial,

Country varchar(14)       

)

–Insertamos los datos en la nueva tabla Dim_country

 

insert into dim_country  (Country)

select distinct(country) from stage

 

 

–Creamos la consulta los distribuidores  únicos para obtener solo los datos únicos de la columna

select distinct(distribuitor) from stage

–Creamos la tabla dim_distribuitor con el id que nos servira paracrear las primero la llave primaria de la dimension y que esta sea la foranea de la de hechos

create table dim_distribuitor

(

id serial,

distribuitor varchar(14) 

)

 

–Insertamos los datos en la nueva tabla dim_distribuitor

 

insert into dim_distribuitor  (distribuitor)

select distinct(distribuitor) from stage

 

 

–Creamos la consulta las marcas  únicas para obtener solo los datos únicos de la columna

select distinct(brand) from stage

 

–Creamos la tabla dim_brand con el id que nos servirá para crear las primero la llave primaria de la dimensión y que esta sea la foránea de la de hechos

create table dim_brand

(

id serial,

brand varchar(14)           

)

 

–Insertamos los datos en la nueva tabla dim_brand

 

insert into dim_brand  (brand)

select distinct(brand) from stage

 

 

–Creamos la consulta las operadores  únicas para obtener solo los datos únicos de la columna

select distinct(operators) from stage

 

–Creamos la tabla dim_operators con el id que nos servirá para crear las primero la llave primaria de la dimensión y que esta sea la foránea de la de hechos

create table dim_operators

(

id serial,

operators varchar(14)    

)

 

–Insertamos los datos en la nueva tabla dim_operators

 

insert into dim_operators  (operators)

select distinct(operators) from stage

 

Paso2) Creamos las consultas para crear la tabla de hechos,  Ahora crearemos la consulta para crear la tabla definitiva de hechos  con varios left joins

 

select  a.date_original,a.unit_cost,a.amount,a.unit_price,a.sales,

b.id as id_country,

c.id as id_distribuitor,

d.id as id_brand,

e.id as id_operators

into Fact_table

from  public.stage as a

left join dim_country as b

on a.country=b.Country

left join dim_distribuitor as c

on a.distribuitor=c.distribuitor

left join dim_brand as d

on a.brand=d.brand

left join dim_operators as e

on a.operators=e.operators

Paso 3) Revisión de la tabla de fechas que tengas los años máximos y mínimos correctos

 

— Verificación de tabla de fechas

— El maximo de fecha en años es 2022 así que solo subiremos  en fecha calendario los dias

select max(year),min(year) from dates

 

select max(date_original),min(date_original) from stage

 

–eliminamos los datos de año 2022

 

delete  from dates

where year=2022

–verificamos

select max(year),min(year) from dates

Paso final tablas resultantes:

 

—Tabla de hechos

select *  from Fact_table

–Tablas de dimensiones

select * from dim_country

select * from dim_distribuitor

select * from dim_brand

select * from dim_operators

select * from dates

En conclusión, la creación de un modelo dimensional en estrella mediante la selección de columnas candidatas para crear la dimensión, siguiendo las buenas prácticas de un modelado de datos eficaz y eficiente, es una estrategia recomendada.

En este proceso se utilizaron las columnas de tipo texto, dejando solo las columnas de tipo numérico o que se usarán para contabilizar y sumar debido a su alta aditividad.

Los pasos del proceso incluyeron la creación de consultas para las dimensiones seleccionadas, la creación de tablas para cada dimensión, la inserción de datos únicos en las tablas de dimensión, la creación de una consulta para la tabla de hechos utilizando varios left joins con las tablas de dimensión, y la revisión de la tabla de fechas. La tabla resultante incluye la tabla de hechos junto con las tablas de dimensión creadas en el proceso, lo que permite una fácil visualización y análisis de los datos. En general, este proceso es fundamental para la implementación de soluciones de análisis de datos eficaces y eficientes.

Te comparto el código completo en mi GitHub: https://github.com/vicente2121/Consultas-modelo-dimensional-reto-numero-5-de-fp20analytics/blob/main/Consultas_dimensiones_hecho.sql

 

Vicente Antonio Juan Magallanes

Business Intelligence Technical.

 

Perfil linkedin.

 

Loading

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *