Tablas de hechos vs dimensiones
El fundamento del modelado dimensional.
Has conectado tus datos. Los has limpiado en Power Query. Ahora quieres crear visualizaciones... pero Power BI no entiende cómo se relacionan tus tablas. Bienvenido al modelado de datos, la habilidad que separa reportes lentos y confusos de dashboards profesionales y ultrarrápidos.
El problema que nadie te cuenta
Imagina este escenario común:
Tu reporte tiene:
- Una tabla de Ventas (500,000 filas)
- Una tabla de Productos (2,000 productos)
- Una tabla de Clientes (15,000 clientes)
- Una tabla de Fechas (10 años de calendario)
Sin un modelo de datos, Power BI no sabe que:
- Cada venta corresponde a UN producto
- Cada venta corresponde a UN cliente
- Cada venta ocurrió en UNA fecha
Resultado: Tus visualizaciones muestran datos incorrectos o no muestran nada.
¿Qué es un modelo de datos?
Un modelo de datos es la estructura que define cómo se relacionan las tablas entre sí. Es el "mapa" que Power BI usa para saber qué información conectar cuando creas un visual.
Analogía del mundo real
Piensa en una biblioteca:
| Sin modelo | Con modelo |
|---|---|
| Libros apilados sin orden | Sistema Dewey de clasificación |
| "¿Dónde está el libro X?" | "Busca en sección 005.133 Python" |
| Búsqueda: 30 minutos | Búsqueda: 30 segundos |
Un modelo de datos es ese sistema de organización que hace que encontrar información sea instantáneo.
Los dos tipos de tablas
Todo modelo de datos tiene dos tipos de tablas:
1. Tablas de hechos (Fact Tables)
Qué son: Tablas con transacciones o eventos que mides.
Características:
- Muchas filas (miles, millones)
- Cambios frecuentes
- Contienen métricas numéricas (ventas, cantidad, costo)
- Contienen claves foráneas (IDs que apuntan a otras tablas)
Ejemplos:
Tabla: Ventas
┌────────────┬────────────┬────────────┬──────────┬──────────┐
│ VentaID │ FechaID │ ProductoID │ Cantidad │ Monto │
├────────────┼────────────┼────────────┼──────────┼──────────┤
│ 1 │ 20240101 │ 301 │ 5 │ 2,500 │
│ 2 │ 20240101 │ 428 │ 2 │ 1,800 │
│ 3 │ 20240102 │ 301 │ 1 │ 500 │
│ ... │ ... │ ... │ ... │ ... │
│ 500,000 │ 20261227 │ 112 │ 3 │ 900 │
└────────────┴────────────┴────────────┴──────────┴──────────┘
Otros ejemplos de tablas de hechos:
- Transacciones financieras
- Registros de llamadas de soporte
- Eventos de website (clics, pageviews)
- Pedidos de compra
2. Tablas de dimensiones (Dimension Tables)
Qué son: Tablas con atributos descriptivos que filtran o agrupan los hechos.
Características:
- Pocas filas (cientos, miles)
- Cambios poco frecuentes
- Contienen descripciones textuales
- Tienen una clave primaria única (ID)
Ejemplo: Tabla Productos
Tabla: Productos
┌────────────┬─────────────────────┬─────────────┬──────────┐
│ ProductoID │ Nombre │ Categoría │ Precio │
├────────────┼─────────────────────┼─────────────┼──────────┤
│ 301 │ Laptop Dell XPS 15 │ Computadoras│ 1,299 │
│ 428 │ iPhone 15 Pro │ Celulares │ 999 │
│ 112 │ Teclado mecánico │ Accesorios │ 129 │
└────────────┴─────────────────────┴─────────────┴──────────┘
Ejemplo: Tabla Clientes
Tabla: Clientes
┌───────────┬────────────────┬────────────┬─────────┐
│ ClienteID │ Nombre │ Segmento │ Ciudad │
├───────────┼────────────────┼────────────┼─────────┤
│ C001 │ Acme Corp │ Corporativo│ Madrid │
│ C002 │ TechStart SL │ PyME │ Barcelona│
│ C003 │ María García │ Individual │ Valencia│
└───────────┴────────────────┴────────────┴─────────┘
Otros ejemplos de tablas de dimensiones:
- Empleados
- Territorios de venta
- Categorías de producto
- Estados de pedido
Comparación visual: Hechos vs Dimensiones
| Aspecto | Tabla de Hechos | Tabla de Dimensiones |
|---|---|---|
| Filas | Muchas (miles-millones) | Pocas (cientos-miles) |
| Actualización | Frecuente (cada hora/día) | Poco frecuente (mensual) |
| Contenido | Métricas numéricas + IDs | Descripciones textuales |
| Uso | Se agrega (SUM, AVG) | Se filtra y agrupa (WHERE, GROUP BY) |
| Ejemplo | Ventas de $15,000 | Producto: "Laptop Dell" |
Por qué un buen modelo importa
Impacto en rendimiento
| Escenario | Modelo mal diseñado | Modelo optimizado |
|---|---|---|
| Cargar dashboard | 45 segundos | 2 segundos |
| Filtrar por categoría | 8 segundos | Instantáneo |
| Tamaño del archivo | 1.2 GB | 280 MB |
| Actualización de datos | 30 minutos | 5 minutos |
Caso real: Empresa de retail
Antes del modelado:
- 8 tablas sin relaciones
- Medidas DAX con múltiples FILTER
- Dashboard de ventas: 60 segundos de carga
- Archivo .pbix: 1.8 GB
Después del modelado:
- Modelo estrella con 4 dimensiones + 1 hecho
- Relaciones correctas
- Dashboard de ventas: 3 segundos de carga
- Archivo .pbix: 420 MB
Mejora: 95% más rápido, 77% menos espacio.
La tabla de fechas: El caso especial
Toda modelo de datos en Power BI necesita una tabla de fechas dedicada.
¿Por qué no usar la fecha de la tabla de Ventas?
Problema: Si usas la columna Fecha de tu tabla de Ventas:
- No puedes comparar "mismo día del año pasado"
- No tienes acceso a inteligencia de tiempo de DAX
- No puedes agrupar por trimestre o semana fácilmente
Qué debe tener una tabla de fechas
Tabla: Calendario
┌────────────┬────────┬─────┬─────────┬───────────┬─────────────┐
│ Fecha │ Año │ Mes │ Trimestre│ DíaSemana │ EsFinDeSemana│
├────────────┼────────┼─────┼─────────┼───────────┼─────────────┤
│ 2024-01-01 │ 2024 │ 1 │ Q1 │ Lunes │ No │
│ 2024-01-02 │ 2024 │ 1 │ Q1 │ Martes │ No │
│ 2024-01-03 │ 2024 │ 1 │ Q1 │ Miércoles │ No │
│ ... │ ... │ ... │ ... │ ... │ ... │
└────────────┴────────┴─────┴─────────┴───────────┴─────────────┘
Beneficios:
- Filtrar por trimestre, semana, año fiscal
- Comparar periodos ("vs año anterior")
- Usar funciones DAX de inteligencia de tiempo
- Marcar días festivos, temporadas altas
Regla de oro: Siempre crea una tabla de fechas independiente. En la próxima lección verás cómo conectarla.
Cómo visualizar tu modelo
En Power BI Desktop, ve a la vista Modelo (icono con tres tablas conectadas en el panel izquierdo).
Modelo mal diseñado
[Ventas] [Productos] [Clientes] [Fechas]
↓ ↓ ↓ ↓
└──────────────┴───────────────┴─────────────┘
(Sin relaciones)
Síntomas:
- Tablas flotando sin conectarse
- Visualizaciones muestran datos incorrectos
- Medidas DAX súper complejas con FILTER anidados
Modelo bien diseñado (Estrella)
[Fechas]
│
│
[Productos] ─── [Ventas] ─── [Clientes]
│
│
[Territorios]
Beneficios:
- Conexiones claras
- Filtros funcionan correctamente
- Medidas DAX simples
Granularidad: El concepto invisible
Granularidad = El nivel de detalle de cada fila en una tabla.
Tabla de Ventas
| Granularidad | Descripción | Ejemplo |
|---|---|---|
| Por transacción | Cada fila = 1 venta individual | Venta #12345 |
| Por día | Cada fila = ventas totales de un día | 2024-01-15 |
| Por mes | Cada fila = ventas totales de un mes | Enero 2024 |
Por qué importa
Problema común: Intentar relacionar tablas con diferente granularidad.
Ejemplo de error:
- Tabla Ventas: Granularidad por transacción (500,000 filas)
- Tabla Presupuesto: Granularidad por mes (24 filas)
Si intentas relacionarlas directamente, Power BI no sabrá cómo emparejar los datos.
Solución: Asegúrate de que ambas tablas se relacionen a través de una tabla común (ej: Fechas) que tenga la misma granularidad.
Ejercicio práctico: Identifica las tablas
Dado este escenario de un e-commerce, clasifica cada tabla:
| Tabla | ¿Hecho o Dimensión? |
|---|---|
| Pedidos (500,000 filas, columnas: PedidoID, ClienteID, Fecha, Total) | ? |
| Productos (8,000 filas, columnas: ProductoID, Nombre, Categoría, Precio) | ? |
| Clientes (25,000 filas, columnas: ClienteID, Nombre, Email, Segmento) | ? |
| Detalle_Pedidos (2M filas, columnas: PedidoID, ProductoID, Cantidad, Subtotal) | ? |
| Categorías (15 filas, columnas: CategoríaID, Nombre, Descripción) | ? |
Respuestas:
- Pedidos → Hecho (transacciones, métricas numéricas)
- Productos → Dimensión (atributos descriptivos)
- Clientes → Dimensión (atributos descriptivos)
- Detalle_Pedidos → Hecho (transacciones, nivel más granular)
- Categorías → Dimensión (catálogo de valores)
Errores comunes de principiantes
Error 1: Usar Excel como base de datos
Traer una tabla de Excel donde cada columna repite información:
Tabla única de Excel (MAL):
┌─────────┬─────────────┬───────────┬──────────┬──────────┐
│ Venta │ Producto │ Categoría │ Cliente │ Segmento │
├─────────┼─────────────┼───────────┼──────────┼──────────┤
│ $500 │ Laptop Dell │ Compus │ Acme │ Corp │
│ $300 │ Laptop Dell │ Compus │ TechStart│ PyME │
│ $200 │ Laptop Dell │ Compus │ María │ Individ │
└─────────┴─────────────┴───────────┴──────────┴──────────┘
Problemas:
- Datos redundantes (categoría se repite 1000 veces)
- Archivo gigante
- Actualizar "Laptop Dell" a "Laptop Dell XPS" requiere cambiar 1000 filas
Error 2: No separar hechos de dimensiones
Todo en una tabla gigante. Power BI funciona, pero lentísimo.
Error 3: Múltiples tablas de hechos sin dimensiones compartidas
No puedes comparar métricas de diferentes hechos.
Checklist de un buen modelo
Antes de crear visualizaciones, verifica:
- Identifiqué mis tablas de hechos (¿dónde están mis transacciones?)
- Identifiqué mis tablas de dimensiones (¿qué atributos describen los hechos?)
- Tengo una tabla de fechas independiente
- Cada tabla tiene una clave primaria única (ID)
- Entiendo la granularidad de cada tabla
- No hay datos redundantes en tablas de hechos
Puntos clave de esta lección
- Un modelo de datos define cómo se relacionan las tablas entre sí
- Tablas de hechos: transacciones/eventos con métricas numéricas (muchas filas)
- Tablas de dimensiones: atributos descriptivos para filtrar/agrupar (pocas filas)
- Un buen modelo puede hacer tu dashboard 20-50x más rápido
- Siempre crea una tabla de fechas independiente
- La granularidad (nivel de detalle) debe ser consistente en tablas relacionadas
Próxima lección
Ahora que entiendes la teoría, en la siguiente lección aprenderás a crear relaciones entre tablas en Power BI: qué tipos de relaciones existen, cómo crearlas correctamente y qué significan términos como "cardinalidad" y "dirección de filtro cruzado".
Quiz de comprensión
- ¿Cuál es la diferencia principal entre una tabla de hechos y una tabla de dimensiones?
- ¿Por qué necesitas una tabla de fechas independiente en lugar de usar la columna de fecha de tu tabla de Ventas?
- En un modelo de e-commerce, ¿la tabla "Pedidos" es una tabla de hechos o de dimensiones? ¿Por qué?
- Si tu dashboard tarda 60 segundos en cargar, ¿puede un buen modelo de datos reducir ese tiempo? ¿Cuánto?
Completaste esta leccion?
Marca esta leccion como completada. Tu progreso se guardara en tu navegador.