Tablas de hechos y dimensiones, granularidad, cardinalidad y normalización — los conceptos que todo profesional Power BI debe dominar antes de tocar DAX
Principiante
📊
Tablas de Hechos vs Tablas de Dimensiones
¿Qué son las tablas de hechos?
Las tablas de hechos contienen las métricas cuantitativas de tu negocio — los números que quieres analizar. Representan eventos o transacciones: ventas, pedidos, llamadas, pagos, clicks.
Las tablas de dimensiones contienen el contexto descriptivo de los hechos — las perspectivas desde las que quieres analizar: qué producto, qué cliente, cuándo, dónde.
💡 Tip kawaii: Una regla fácil para distinguirlas: si la tabla responde a "¿cuánto?" o "¿cuántas veces?" → es tabla de hechos. Si responde a "¿de qué?", "¿quién?", "¿dónde?" o "¿cuándo?" → es dimensión. 🌸
🔍
Granularidad
¿Qué es la granularidad?
La granularidad define el nivel de detalle de cada fila en tu tabla de hechos. Es la decisión más importante al diseñar un modelo: ¿qué representa exactamente una fila?
Ejemplos de granularidad:
Granularidad de línea de pedido: una fila = un producto dentro de un pedido
Granularidad de pedido: una fila = un pedido completo (varios productos agregados)
Granularidad diaria: una fila = ventas totales del día por tienda
¿Cuál elegir?
Siempre el nivel de detalle más granular que necesites. Un modelo a nivel de línea de pedido puede agruparse para ver ventas diarias, mensuales o anuales. Al revés no es posible — no puedes desagregar datos ya agregados.
⚠️ Ojo con esto: Mezclar granularidades distintas en la misma tabla de hechos es una fuente habitual de errores en los cálculos. Si tienes datos a nivel diario y a nivel mensual, créalos en tablas separadas.
🔢
Cardinalidad
¿Qué es la cardinalidad?
La cardinalidad describe el número de valores únicos en una columna. En Power BI, la cardinalidad tiene un impacto directo en el rendimiento del modelo y en el tamaño del archivo.
Alta cardinalidad (problemática):
Columnas como IDTransaccion, FechaHora, Email — cada fila es única
El motor VertiPaq no comprime bien estas columnas
El archivo PBIX crece y las consultas son más lentas
Cómo reducir cardinalidad:
Eliminar columnas de alta cardinalidad que no uses en análisis
Redondear fechas/horas: guardar solo fecha si la hora no importa
Agrupar valores raros en una categoría "Otros"
Usar enteros en lugar de texto como claves (1 en vez de "PROD-001")
📋
Normalización vs Desnormalización
Normalización en bases de datos
Las bases de datos transaccionales (OLTP) se diseñan normalizadas: sin datos duplicados, con tablas separadas para cada entidad y relaciones entre ellas. Esto es ideal para operaciones de escritura pero no para análisis.
Desnormalización para análisis (OLAP)
Para Power BI, queremos modelos desnormalizados estratégicamente: dimensiones planas con todos los atributos en una sola tabla para facilitar el análisis y reducir los JOINs en tiempo de consulta.
Ejemplo práctico:
-- Base de datos normalizada (3 tablas)
Producto (IDProducto, Nombre, IDCategoria)
Categoria (IDCategoria, NombreCategoria, IDSubcategoria)
Subcategoria (IDSubcategoria, NombreSubcategoria)
-- Dimensión desnormalizada para Power BI (1 tabla)
DimProducto (IDProducto, Nombre, Categoria, Subcategoria)
En Power BI, la dimensión plana rinde mejor porque VertiPaq puede comprimirla eficientemente sin necesidad de JOINs costosos en tiempo de consulta.
🔑
Claves Primarias y Foráneas
Clave primaria (Primary Key)
La clave primaria identifica de forma única cada fila en una tabla de dimensión. Debe ser:
Única: sin valores duplicados
Sin nulos: cada fila tiene un valor
Estable: no cambia con el tiempo
Por convención: IDProducto, IDCliente, IDFecha.
Clave foránea (Foreign Key)
La clave foránea en la tabla de hechos hace referencia a la clave primaria de una dimensión, estableciendo la relación entre ambas tablas.
📌 Buena práctica: Usa siempre claves enteras (INT) como claves primarias y foráneas. Son más pequeñas, rápidas de comparar y el motor VertiPaq las comprime mucho mejor que texto.
🚀 ¡Ya tienes las bases! Con estos conceptos claros, el siguiente paso es entender el patrón de diseño que usarás en el 90% de tus modelos: el Esquema Estrella. También es fundamental dominar las Relaciones entre tablas para conectar correctamente hechos y dimensiones.