Modelado dimensional

Introducción al modelado de datos en Snowflake

Nuno Rocha

Director of Engineering

Introducción al modelo de datos dimensional

  • Modelado dimensional: técnica de estructuración de datos que separa las mediciones (hechos) de los detalles descriptivos (dimensiones), optimizada para informes y análisis.

Modelo dimensional

Introducción al modelado de datos en Snowflake

Introducción al modelo de datos dimensional (1)

  • Dimensiones: entidades con datos categóricos en un modelo dimensional.
  • Hechos: entidades que capturan y cuantifican actividades dentro de las categorías de las dimensiones.

Modelo dimensional universitario

Introducción al modelado de datos en Snowflake

Esquema del modelo dimensional en estrella

Modelo dimensional en estrella

Introducción al modelado de datos en Snowflake

Esquema del modelo dimensional en estrella

  • Snowflake Data Warehouse: servicio en la nube de almacenamiento y analítica.
  • Esquema en copo de nieve: forma de organizar datos en un modelo dimensional que incluye subdimensiones.

Snowflake, data warehouse vs dimensional model

Introducción al modelado de datos en Snowflake

Esquema del modelo dimensional en copo de nieve

Modelo dimensional en copo de nieve

Introducción al modelado de datos en Snowflake

Definir dimensiones

  • Renombra entidades a dim_EntityName para mayor claridad, siguiendo las dimensiones del modelo:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Introducción al modelado de datos en Snowflake

Definir la dimensión de fecha

  • Creación de la tabla dim_date para guardar fechas clave relacionadas con las matrículas del alumnado:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Introducción al modelado de datos en Snowflake

Definir el hecho de matrículas

  • Crea una entidad de hechos con referencias a todas las dimensiones:
CREATE OR REPLACE TABLE fact_enrollments (
    enrollment_id NUMBER(10,0) PRIMARY KEY,
    student_id NUMBER(10,0),
    class_id NUMBER(10,0),
    date_id NUMBER(10,0),
    FOREIGN KEY (student_id) REFERENCES dim_students(student_id),
    FOREIGN KEY (class_id) REFERENCES dim_classes(class_id),
    FOREIGN KEY (date_id) REFERENCES dim_date(date_id)
);
Introducción al modelado de datos en Snowflake

Recuperar datos de las dimensiones

Modelo de datos dimensional universitario

Introducción al modelado de datos en Snowflake

Recuperar datos de las dimensiones (1)

SELECT name, 
    class_name
FROM fact_enrollments
    JOIN dim_students -- Unir para obtener nombres del alumnado
    ON fact_enrollments.student_id = dim_students.student_id
    JOIN dim_classes -- Unir para obtener nombres de asignaturas
    ON fact_enrollments.class_id = dim_classes.class_id
    JOIN dim_schools -- Unir para filtrar por la escuela 'Science'
    ON dim_classes.school_id = dim_schools.school_id
    JOIN dim_date -- Unir para restringir al año 2023
    ON fact_enrollments.date_id = dim_date.date_id
WHERE dim_schools.school_name = 'Science' 
    AND dim_date.year = 2023;
Introducción al modelado de datos en Snowflake

Resumen de términos y funciones

  • Modelado dimensional: técnica que separa mediciones (hechos) y detalles descriptivos (dimensiones), optimizada para informes y análisis
  • Dimensiones: entidades con datos categóricos en un modelo dimensional
  • Hechos: entidades que capturan y cuantifican actividades dentro de las categorías de las dimensiones
  • ALTER TABLE: comando SQL para modificar la estructura de una entidad existente
  • RENAME TO: comando SQL, usado con ALTER TABLE, para renombrar una entidad
  • JOIN ON: cláusula SQL para combinar filas de tablas, basada ON una columna relacionada
  • WHERE: cláusula SQL para filtrar registros según una condición
  • AND: operador lógico usado con WHERE para combinar condiciones
Introducción al modelado de datos en Snowflake

Resumen de funciones

-- Modificar una entidad
ALTER TABLE table_name 
RENAME TO new_name;
-- Consultar datos de entidades unidas filtrando por condiciones específicas
SELECT 
    table_name.column_name,
    other_name.*
FROM table_name
    JOIN other_table 
    ON table_name.FK = other_table.PK
WHERE column_name  condition  value
    AND column_name  condition  value;
Introducción al modelado de datos en Snowflake

¡Vamos a practicar!

Introducción al modelado de datos en Snowflake

Preparing Video For Download...