Contenido del curso
Modelos dimensionales
- 6

Data Warehouse, Data Lake y Lakehouse
07:02 min - 7

Modelo estrella vs copo de nieve en datos
05:14 min - 8

Tipos de dimensiones lentamente cambiantes
04:32 min - 9

Dimensión tipo 1: sobrescribir sin guardar historia
07:13 min - 10

Dimensión tipo 2
06:05 min - 11

Dimensión tipo 3: historia en columnas
03:31 min - 12

Tabla de hechos (fact)
09:04 min - 13

Configuración de herramientas para Data Warehouse y ETL
03:22 min - 14

Cómo extraer dimensiones de preguntas de negocio
08:54 min - 15

Diseño de tablas en un modelo dimensional
11:23 min
ETL para inserción en Data Warehouse
- 16

Documento de mapeo en ETL para data warehouse
19:25 min - 17

Creando tablas dimensionales en Redshift
Viendo ahora - 18

Extracción: querys en SQL
17:28 min - 19

Cruce de fuentes en Pentaho con Stream Lookup
09:25 min - 20

Transformación ETL con Pentaho paso a paso
15:19 min - 21

Carga de datos transformados a Redshift con Pentaho
15:01 min - 22

Cómo cargar la tabla de hechos con Pentaho
12:21 min - 23

Cómo calcular MaxID y MaxDate en Pentaho
17:26 min - 24

Orquestar ETL en Pentaho: job
24:27 min - 25

Solución ETL con dimensiones en paralelo en Redshift
07:27 min
Cierre
Creando tablas dimensionales en Redshift
Resumen
Construir un modelo dimensional en Redshift a partir de una base transaccional en Postgres requiere mapear cada campo, definir tipos de datos correctos y crear las dimensiones antes que la tabla de hechos. Aquí verás cómo se materializa esa lógica en SQL para un data warehouse basado en Adventure Works, útil si trabajas con ETL, modelado de datos o analítica.
¿Cómo se mapean las dimensiones de producto, territorio y vendedores?
Antes de tocar SQL, el documento de mapeo define qué campos de la fuente alimentan cada atributo de cada dimensión. Ese documento es la guía maestra del proceso ETL.
En la dimensión de producto, los datos provienen directamente de la tabla de productos, y la categoría se completa con el nombre y la descripción de una tabla relacionada. La dimensión de territorio se llena con sus campos equivalentes desde la fuente, sin transformaciones complejas.
La dimensión de vendedores es la más interesante porque funciona como dimensión lentamente cambiante tipo 2. Esto significa que cada cambio en los datos del vendedor genera un nuevo registro histórico, y por eso aparecen dos campos extra: fecha de inicio y fecha fin.
¿Qué es una dimensión lentamente cambiante tipo 2? Es una dimensión que conserva el historial de cambios creando un registro nuevo cada vez que un atributo se modifica, usando fechas de vigencia para saber qué versión estaba activa en cada momento.
Estos dos campos no tienen fuente directa: se calculan dentro del proceso ETL. También se aplican transformaciones como concatenar nombre y apellido en un campo de nombre completo, y convertir la letra M y F del género en masculino y femenino.
¿Cómo se construye la tabla de hechos de ventas?
La fact table de ventas se alimenta de las fuentes transaccionales y aplica cálculos que generan las métricas de negocio.
Para el valor de la venta, se multiplica la cantidad por el precio unitario. Para el descuento, se calcula precio unitario por descuento por cantidad. Estas operaciones se ejecutan dentro del ETL antes de insertar el registro.
Los campos ID de territorio, cliente, vendedor y producto no se copian tal cual desde la transaccional. La fuente entrega códigos operativos, y debes cruzarlos contra cada dimensión ya cargada para resolver el ID dimensional correspondiente. Por eso siempre se cargan primero las dimensiones y después la tabla de hechos [03:00].
¿Cómo se crea la dimensión de clientes en Redshift?
El flujo va de Postgres, donde vive Adventure Works como base transaccional, hacia Redshift, que actúa como data warehouse. Dentro de Redshift se trabaja sobre una base de datos llamada Analytics y un esquema DWH Adventure Works [04:25].
La primera tabla a construir es dim_clientes, y los tipos de dato se ajustan al contenido real de cada campo:
- ID cliente como integer y primary key.
- Código del cliente con tamaño 10.
- Nombre y apellido con tamaño 50 cada uno.
- Nombre completo con tamaño 100, ya que concatena los dos anteriores.
- Teléfonos celular, casa y trabajo con tamaño 20 estándar.
- Ciudad de la casa con tamaño 50 por ser descripción.
A esos campos se suman dos columnas de auditoría que aparecen en toda dimensión bien diseñada: fecha de carga y fecha de actualización, ambas como timestamp. Sirven para rastrear cuándo entró un registro y cuándo se modificó por última vez.
sql CREATE TABLE dwh_adventure_works.dim_clientes ( id_cliente INTEGER, codigo_cliente VARCHAR(10), nombre VARCHAR(50), apellido VARCHAR(50), nombre_completo VARCHAR(100), telefono_celular VARCHAR(20), telefono_casa VARCHAR(20), telefono_trabajo VARCHAR(20), ciudad_casa VARCHAR(50), fecha_carga TIMESTAMP, fecha_actualizacion TIMESTAMP, PRIMARY KEY (id_cliente) );
Al ejecutar un SELECT sobre la tabla recién creada, el resultado vendrá vacío pero con la estructura completa lista para recibir datos en el siguiente paso del ETL.
¿Por qué definir tamaños específicos en VARCHAR? Porque ajustar el tamaño al contenido real ahorra almacenamiento, mejora el rendimiento de las consultas y evita reservar espacio innecesario en el data warehouse.
¿Por qué crear primero el esquema y después las transformaciones?
La lógica detrás de este orden es práctica: necesitas el contenedor antes de mover los datos. Crear las tablas físicas establece la base sobre la cual el ETL podrá extraer, transformar y cargar.
El reto siguiente es replicar este mismo proceso para las dimensiones de productos, vendedores y territorio, además de la fact de ventas. Aún no toca preocuparse por las transformaciones; el foco está en el script DDL que materializa el modelo dimensional en la base de datos.
Después vendrá la extracción desde Postgres, las transformaciones definidas en el documento de mapeo y el poblado real de las tablas. ¿Cómo vas a estructurar tu script para las otras cuatro tablas? Cuéntame en los comentarios.