¿Qué es? ¿Cómo se diseña?
¿Qué se puede sumar? ¿Qué pasa cuando el negocio cambia?
Prof. Tomás Fernández · tomasdata.io
Hechos, dimensiones, medidas, atributos y llaves.
Cuatro pasos, en un orden que no se negocia.
Tipos de tablas de hechos y medidas que no se suman.
Dimensiones que cambian, dimensiones compartidas, estrella vs. 3FN.
Un modelo estrella es una forma de ordenar los datos para analizarlos: una tabla de hechos al centro —lo que pasó, medido— rodeada de dimensiones —el contexto con que lo preguntas.
Se llama «estrella» por cómo se ve dibujado: un centro y varias puntas.
| Concepto | Qué es | En Austral |
|---|---|---|
| Tabla de hechos | registra los eventos del negocio: una fila por evento | fact_venta_linea: cada producto vendido en una factura |
| Medida | un número de la tabla de hechos, que se suma, se cuenta o se promedia | cantidad, precio unitario, costo unitario |
| Dimensión | una tabla que describe el contexto del evento: quién, qué, cuándo, dónde | dim_cliente, dim_producto, dim_tiempo |
| Atributo | una columna descriptiva de una dimensión; sirve para filtrar y agrupar | segmento, línea de negocio, trimestre |
Hechos largos y flacos (muchas filas, pocas columnas); dimensiones cortas y anchas (pocas filas, mucho texto).
| Concepto | Qué es | En Austral |
|---|---|---|
| Llave primaria | la columna que identifica cada fila de una tabla, sin repetirse | producto_key en dim_producto |
| Llave foránea | la columna del hecho que apunta a la llave primaria de una dimensión | producto_key en fact_venta_linea |
| Llave natural y llave surrogate | natural: viene en los datos. Surrogate: un número inventado, que no cambia ni se escribe mal | rut_cliente es natural; cliente_key es surrogate |
| Relación 1 a N | una fila de la dimensión se relaciona con muchas filas del hecho | un producto aparece en muchas líneas de factura |
| Dimensión degenerada | un identificador que se queda en el hecho porque no tiene atributos propios | numero_factura |
Identifica cada producto. No se repite.
Cada línea dice a qué producto pertenece.
Se queda en el hecho: no tiene atributos propios.
La llave natural (el RUT) viene como la escribió cada persona. La llave surrogate es un número inventado: no lleva puntos, ni guion, ni espacios, y nunca se escribe mal.
¿Cuál es mi margen bruto por línea de negocio, por trimestre?
| Palabra de la pregunta | Dónde vive en el modelo |
|---|---|
| margen bruto | medida → se calcula desde el hecho |
| por línea de negocio | atributo de dim_producto |
| por trimestre | atributo de dim_tiempo |
Toda pregunta de gestión tiene esta forma: un número, cortado por contexto. La estrella es esa frase hecha tabla.
Para cada pregunta: ¿cuál es la medida, por qué dimensiones se corta y cuál es el filtro?
| Sistema que opera | Sistema que analiza | |
|---|---|---|
| Ejemplo | ERP, facturación, punto de venta | Data warehouse, modelo de Power BI |
| Trabajo | escribe una factura a la vez | lee 810.000 líneas a la vez |
| Su miedo | guardar un dato en dos lugares | un JOIN de siete tablas para un gráfico |
| Su forma | normalizada (3FN) | estrella |
El nombre técnico: OLTP (procesamiento de transacciones) y OLAP (procesamiento analítico). La estrella la ordenó Ralph Kimball en los 90 y sigue siendo el estándar de BI.
Las medidas van al final. Si empiezas por los números, terminas sumando columnas que no se pueden sumar.
Evento: se emite una línea de factura.fact_venta_linea
Evento: el cliente paga una factura.fact_cobranza
Evento: llega una orden de compra en USD.fact_compra
El proceso es un verbo del negocio, no un área. «Finanzas» no es un proceso; cobrar sí lo es.
El grano es lo que representa una fila de la tabla de hechos, dicho en una frase.
«Una fila de fact_venta_linea es un producto vendido en una factura.»
Desde la línea siempre puedes subir a la factura, al cliente o al mes. Desde el mes nunca puedes bajar a la línea.
El descuento se negocia por factura. Copiado en cada línea, se cuenta 2,60 veces: el margen de Austral da 14,90 % cuando el real es 24,59 %.
| factura | sku | venta | descuento |
|---|---|---|---|
| …000023 | ELE-1004 | 975.520 | 56.882 |
| …000023 | HER-2003 | 1.455.588 | 56.882 |
| …000023 | FIJ-4003 | 217.664 | 56.882 |
| SUM(descuento) | 170.646 | ||
| factura | líneas | descuento |
|---|---|---|
| F-2022-000023 | 3 | 56.882 |
| SUM(descuento) | 56.882 | |
El descuento se negoció una vez, por la factura completa. La planilla lo copió en cada línea, y la suma lo cuenta tres veces. Nadie se equivocó al escribir la consulta.
El archivo del Parcial 2: ventas_alimentaria.csv. Columnas: id_venta, fecha, id_producto, producto, categoria, id_proveedor, proveedor, pais_proveedor, cantidad, precio_unitario.
id_venta va a una dimensión?A la vuelta: no todo número se puede sumar.
| Tipo | Una fila es… | En Austral |
|---|---|---|
| Transaccional | un evento, cuando ocurre. No se vuelve a tocar. | una línea de factura |
| Snapshot periódico | una foto del estado al cierre de cada período | el saldo por cobrar de cada cliente al cierre de cada mes |
| Snapshot acumulativo | un proceso con hitos; la fila se actualiza a medida que avanza | una factura: emitida → vence → pagada |
El archivo de Austral ya trae los tres hitos: fecha_emision, fecha_vencimiento y fecha_pago. Y 639 de las 6.000 líneas todavía no tienen fecha de pago.
Se llama dimensión de rol: el mismo calendario, usado tres veces con distinto significado. No se hacen tres tablas de fechas.
| Clase | Se suma… | Ejemplos en finanzas |
|---|---|---|
| Aditiva | por cualquier dimensión | venta, costo, cantidad, descuento (a su grano) |
| Semiaditiva | entre clientes o productos, nunca en el tiempo | saldo por cobrar, saldo de caja, stock |
| No aditiva | por ninguna dimensión | margen %, precio unitario, tipo de cambio, DSO |
El saldo de marzo más el de abril no es el saldo de nada. Al cierre de un trimestre se informa el último, no la suma.
promedio simple de los cuatro márgenes por línea de negocio
margen real de la empresa, calculado desde las partes
| Línea | Seguridad | Herramientas | Eléctrico | Fijaciones |
|---|---|---|---|---|
| Margen | 32,8 % | 27,1 % | 19,7 % | 12,5 % |
| Venta (CLP) | $1.500 MM | $4.026 MM | $2.962 MM | $640 MM |
Promediar les da el mismo voto a Fijaciones y a Herramientas, que vende seis veces más. Guarda lo aditivo; calcula el cociente al final.
¿Cada medida es aditiva, semiaditiva o no aditiva? Si es aditiva, ¿a qué grano?
cantidad
precio_unitario
descuento_factura
tipo_cambio
saldo por cobrar al cierre de mes
días entre emisión y pago
Comercial decide que la Luminaria LED industrial 150 W (ELE-1004) deja de ser Eléctrico y pasa a Iluminación, desde enero de 2024.
¿Qué le pasa a 2023?
| key | sku | línea |
|---|---|---|
| 4 | ELE-1004 | Iluminación |
La historia se reescribe: las ventas de 2023 aparecen en Iluminación, aunque en 2023 eran Eléctrico.
| key | sku | línea | vigencia |
|---|---|---|---|
| 4 | ELE-1004 | Eléctrico | hasta 31-12-2023 |
| 17 | ELE-1004 | Iluminación | desde 01-01-2024 |
La historia se conserva: cada venta apunta a la versión del producto que existía ese día.
Fíjate en el tipo 2: el sku se repite. Por eso el hecho guarda una llave surrogate y no el código del producto.
El directorio pide el margen por línea de negocio de 2023 contra 2024.
¿Tipo 1 o tipo 2?
| Experto de negocio interno | La pregunta que le haces |
|---|---|
| Control de Gestión | «¿El informe de 2023 se reexpresa con la clasificación nueva, o se respeta como se cerró?» |
| Proceso (tabla de hechos) | tiempo | cliente | producto | comercial |
|---|---|---|---|---|
fact_venta_linea | ✔ | ✔ | ✔ | ✔ |
fact_venta_factura (descuento, flete) | ✔ | ✔ | — | ✔ |
fact_cobranza | ✔ | ✔ | — | — |
Si las tres estrellas usan la misma dim_tiempo y la misma dim_cliente, sus números se pueden poner lado a lado. Si cada una tiene su propio calendario, Comercial y Contabilidad no van a cuadrar nunca.
| 3FN | Copo de nieve | Estrella | |
|---|---|---|---|
| Idea | nada se repite | dimensiones normalizadas en cadena | dimensiones planas, repiten a propósito |
| Ejemplo | producto → categoría → … | dim_producto → dim_linea_negocio | linea_negocio dentro de dim_producto |
| Gana | escribir sin anomalías | un poco de espacio | leer rápido, fácil de entender |
| Vive en | el ERP | algunos data warehouses | el modelo del reporte |
La 3FN es cómo lo guardas. La estrella es cómo lo entregas.
SELECT DISTINCT — en la alimentaria salen 7 proveedores donde hay 4. Se agrupa por la llave.| Modelo estrella | una tabla de hechos al centro, rodeada de dimensiones |
| Tabla de hechos | registra los eventos del negocio, una fila por evento |
| Medida | un número de la tabla de hechos que se suma, cuenta o promedia |
| Dimensión | tabla con el contexto del evento: quién, qué, cuándo, dónde |
| Atributo | columna descriptiva de una dimensión; sirve para filtrar y agrupar |
| Grano | lo que representa una fila de la tabla de hechos, en una frase |
| Llave primaria | identifica cada fila de una tabla, sin repetirse |
| Llave foránea | columna del hecho que apunta a la llave primaria de una dimensión |
| Llave natural / surrogate | natural: viene en los datos (RUT, sku). Surrogate: número inventado y estable |
| Relación 1 a N | una fila de la dimensión, muchas filas del hecho |
| Dimensión degenerada | identificador sin atributos propios que se queda en el hecho |
| Dimensión de rol | una misma dimensión usada varias veces con distinto significado |
| Dimensión compartida | la misma dimensión usada por varias tablas de hechos (conformada) |
| Aditiva / semiaditiva / no aditiva | se suma por todo / por todo menos el tiempo / por nada |
| Transaccional | tabla de hechos con una fila por evento, que no se vuelve a tocar |
| Snapshot periódico / acumulativo | una foto al cierre de cada período / un proceso cuyos hitos se van llenando |
| SCD tipo 1 / tipo 2 | al cambiar un atributo: se sobrescribe / se agrega una fila nueva con vigencia |
| 3FN (normalizar) | cada dato del negocio guardado en un solo lugar, colgado de su llave |
| Copo de nieve | estrella con las dimensiones normalizadas en cadena |
| OLTP / OLAP | el sistema que opera (escribe) / el que analiza (lee) |
ELE-1004 cambió de línea en 2024, ¿cuál de los dos márgenes de Eléctrico de 2023 le muestras al directorio, y a quién se lo preguntas antes?fact_venta_linea, en una frase?