Lección 12 de 36Modelado de Datos

Tablas de hechos vs dimensiones

El fundamento del modelado dimensional.

20 minutos

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:

  1. Pedidos → Hecho (transacciones, métricas numéricas)
  2. Productos → Dimensión (atributos descriptivos)
  3. Clientes → Dimensión (atributos descriptivos)
  4. Detalle_Pedidos → Hecho (transacciones, nivel más granular)
  5. 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

  1. ¿Cuál es la diferencia principal entre una tabla de hechos y una tabla de dimensiones?
  2. ¿Por qué necesitas una tabla de fechas independiente en lugar de usar la columna de fecha de tu tabla de Ventas?
  3. En un modelo de e-commerce, ¿la tabla "Pedidos" es una tabla de hechos o de dimensiones? ¿Por qué?
  4. 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.