Relaciones y cardinalidad
Conecta tus tablas con relaciones correctas.
Ya entiendes qué es un modelo de datos y la diferencia entre tablas de hechos y dimensiones. Ahora viene la parte práctica: conectar estas tablas para que Power BI entienda cómo se relacionan. Una relación mal configurada puede hacer que tus visualizaciones muestren datos incorrectos o simplemente en blanco.
¿Qué es una relación?
Una relación es una conexión entre dos tablas basada en columnas con valores coincidentes.
Ejemplo del mundo real
Imagina dos tablas:
Tabla: Ventas
┌─────────┬────────────┬──────────┐
│ VentaID │ ProductoID │ Monto │
├─────────┼────────────┼──────────┤
│ 1 │ 301 │ 1,500 │
│ 2 │ 428 │ 2,000 │
│ 3 │ 301 │ 1,500 │
└─────────┴────────────┴──────────┘
Tabla: Productos
┌────────────┬─────────────────────┬─────────────┐
│ ProductoID │ Nombre │ Categoría │
├────────────┼─────────────────────┼─────────────┤
│ 301 │ Laptop Dell XPS 15 │ Computadoras│
│ 428 │ iPhone 15 Pro │ Celulares │
└────────────┴─────────────────────┴─────────────┘
La relación:
- Conecta
Ventas[ProductoID]conProductos[ProductoID] - Permite que cuando filtres por "Computadoras", solo veas ventas del producto 301
Cómo crear una relación en Power BI
Método 1: Automático (al cargar datos)
Cuando importas tablas, Power BI detecta automáticamente relaciones si:
- Hay columnas con el mismo nombre
- Los tipos de datos coinciden
- Los valores existen en ambas tablas
Pros: Rápido, sin esfuerzo Contras: A veces detecta relaciones incorrectas o se pierde relaciones reales
Método 2: Manual (recomendado)
Paso a paso:
- Ve a la vista Modelo (icono con tres cajas conectadas)
- Arrastra la columna de una tabla hacia la columna correspondiente de otra tabla
- Configura los parámetros de la relación
- Haz clic en OK
Ejemplo práctico: Conectar Ventas con Productos
Arrastra: Ventas[ProductoID] → Productos[ProductoID]
Método 3: Diálogo de gestión de relaciones
Ruta: Inicio → Administrar relaciones → Nueva
Cuándo usar: Para revisar todas las relaciones existentes o crear relaciones complejas.
Los tres tipos de cardinalidad
Cardinalidad = Cómo se emparejan las filas entre dos tablas.
1. Uno a muchos (1:N) - La más común
Definición: Una fila de la tabla A puede relacionarse con muchas filas de la tabla B, pero cada fila de B solo se relaciona con una fila de A.
Ejemplo: Productos → Ventas
Productos (1) Ventas (N)
┌────────────┐ ┌─────────────┐
│ ProductoID │ ←────── │ ProductoID │
│ 301 │ │ 301 (venta1)│
│ │ │ 301 (venta2)│
│ │ │ 301 (venta3)│
└────────────┘ └─────────────┘
- 1 producto puede tener muchas ventas
- Cada venta tiene solo 1 producto
En Power BI:
- La tabla del lado "1" debe tener valores únicos (sin duplicados)
- La tabla del lado "N" puede tener valores duplicados
Casos de uso:
- Productos → Ventas
- Clientes → Pedidos
- Categorías → Productos
- Fechas → Transacciones
Regla práctica: El 95% de tus relaciones serán 1:N, conectando dimensiones (1) con hechos (N).
2. Muchos a uno (N:1) - Igual que 1:N
Es lo mismo que 1:N, solo que desde la perspectiva opuesta.
Ejemplo: Ventas → Productos
- Muchas ventas → Un producto
Power BI automáticamente detecta la dirección correcta.
3. Uno a uno (1:1) - Raro
Definición: Una fila de A se relaciona con exactamente una fila de B, y viceversa.
Ejemplo: Empleados → Credenciales
Empleados (1) Credenciales (1)
┌────────────┐ ┌──────────────┐
│ EmpleadoID │ ←────── │ EmpleadoID │
│ E001 │ │ E001 │
│ E002 │ │ E002 │
└────────────┘ └──────────────┘
Cuándo usarla:
- Cuando separas datos sensibles (empleados vs salarios)
- Cuando tienes una tabla complementaria con datos adicionales
Advertencia: Generalmente es mejor combinar ambas tablas en una sola usando Power Query.
4. Muchos a muchos (N:N) - Evitar
Definición: Muchas filas de A se relacionan con muchas filas de B, y viceversa.
Ejemplo problemático: Estudiantes ↔ Cursos
Estudiantes (N) Cursos (N)
┌─────────────┐ ┌─────────────┐
│ EstudianteID│ ←────→ │ CursoID │
│ Juan │ │ Python │
│ María │ │ SQL │
│ Pedro │ │ Power BI │
└─────────────┘ └─────────────┘
- Juan toma Python y SQL
- María toma SQL y Power BI
- Pedro toma Python, SQL y Power BI
El problema: Power BI no puede resolver estas relaciones eficientemente.
La solución: Crear una tabla puente (bridge table)
Estudiantes (1) Inscripciones (N) Cursos (1)
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ EstudianteID│ ←────── │ EstudianteID│ │ CursoID │
│ │ │ CursoID │ ──────→│ │
└─────────────┘ └─────────────┘ └─────────────┘
Ahora tienes dos relaciones 1:N en lugar de una N:N.
Regla de oro: Si necesitas una relación N:N, casi siempre hay una tabla puente oculta que deberías crear.
Comparación visual de cardinalidad
| Tipo | Símbolo en Power BI | Lado "1" | Lado "N" | Uso típico |
|---|---|---|---|---|
| 1:N | 1 → ∞ | Valores únicos | Valores duplicados | Dimensión → Hecho |
| N:1 | ∞ → 1 | Valores duplicados | Valores únicos | Hecho → Dimensión |
| 1:1 | 1 → 1 | Valores únicos | Valores únicos | Poco común |
| N:N | ∞ → ∞ | Duplicados ambos lados | Duplicados ambos lados | Evitar (usar puente) |
Dirección de filtro cruzado
Dirección de filtro = En qué dirección fluyen los filtros a través de la relación.
Opción 1: Única (Single) - Por defecto
Comportamiento: Los filtros fluyen de uno solo de los lados de la relación.
Ejemplo: Productos (1) → Ventas (N)
Productos ───────→ Ventas
(Se puede filtrar) (Filtra a Ventas)
Escenario:
- Filtras por Categoría = "Computadoras" en un segmentador
- ✅ Las visualizaciones de Ventas muestran solo ventas de computadoras
- ❌ Si intentas filtrar desde Ventas hacia Productos, no funciona
Cuándo usar: El 95% del tiempo. Es más eficiente y evita ambigüedades.
Opción 2: Ambas (Both) - Usar con cuidado
Comportamiento: Los filtros fluyen en ambas direcciones.
Productos ←───────→ Ventas
Cuándo usar:
- Necesitas filtrar dimensiones basándote en hechos
- Ejemplo: "Mostrar solo productos que tuvieron ventas en 2024"
Advertencia: Puede causar:
- Ambigüedad de relaciones (Power BI se confunde)
- Rendimiento lento (más cálculos)
- Resultados incorrectos en medidas DAX complejas
Regla práctica: Usa dirección "Única" por defecto. Solo usa "Ambas" si tienes una razón específica y entiendes las implicaciones.
Visualización de direcciones de filtro
En la vista Modelo de Power BI:
Dirección única:
Productos ──────→ Ventas
(1) (*)
Dirección ambas:
Productos ←──────→ Ventas
(1) (*)
Sin relación:
Productos Ventas
(1) (*)
Caso práctico: Modelo de ventas completo
Vamos a crear un modelo completo para un dashboard de ventas.
Tablas disponibles
Ventas (tabla de hechos)
- VentaID, FechaID, ProductoID, ClienteID, TerritorioID, Cantidad, Monto
Productos (dimensión)
- ProductoID, Nombre, CategoríaID, Precio
Categorías (dimensión)
- CategoríaID, Nombre, Descripción
Clientes (dimensión)
- ClienteID, Nombre, Segmento, CiudadID
Fechas (dimensión)
- FechaID, Fecha, Año, Mes, Trimestre, Día
Territorios (dimensión)
- TerritorioID, Nombre, Región, País
Relaciones a crear
Fechas (1)
│
│ (FechaID)
↓
Productos (1) ──(ProductoID)──→ Ventas (N) ──(ClienteID)──→ Clientes (1)
│ │
│ (CategoríaID) │ (TerritorioID)
↓ ↓
Categorías (1) Territorios (1)
Configuración paso a paso
| Relación | Desde | Hacia | Cardinalidad | Dirección |
|---|---|---|---|---|
| 1 | Ventas[FechaID] | Fechas[FechaID] | N:1 | Única |
| 2 | Ventas[ProductoID] | Productos[ProductoID] | N:1 | Única |
| 3 | Ventas[ClienteID] | Clientes[ClienteID] | N:1 | Única |
| 4 | Ventas[TerritorioID] | Territorios[TerritorioID] | N:1 | Única |
| 5 | Productos[CategoríaID] | Categorías[CategoríaID] | N:1 | Única |
Resultado: Modelo estrella perfecto (lo veremos en la siguiente lección).
Errores comunes con relaciones
Error 1: Relacionar con columnas no únicas
Problema:
Ventas[ClienteNombre] → Clientes[Nombre]
Si dos clientes se llaman "María García", Power BI no sabe cuál es cuál.
Solución: Siempre usa IDs únicos, no nombres.
Error 2: Tipos de datos no coinciden
Problema:
- Ventas[ProductoID] es Número
- Productos[ProductoID] es Texto
Síntoma: Power BI no detecta la relación automáticamente.
Solución: Convierte ambas columnas al mismo tipo en Power Query.
Error 3: Valores nulos en la tabla del lado "1"
Problema: Si Productos[ProductoID] tiene un valor NULL, causa problemas.
Solución: Asegúrate de que la columna de clave primaria no tenga nulos.
Error 4: Relaciones inactivas sin uso
Síntoma: Línea punteada en la vista Modelo.
Qué significa: Power BI detectó una relación pero no la activa porque ya hay otra relación activa entre esas tablas.
Cuándo es normal: Tablas role-playing (ej: Fechas de pedido vs Fechas de envío).
Solución: Usa la función USERELATIONSHIP() en DAX para activarla en medidas específicas.
Validar tus relaciones
Checklist de validación
- Todas las relaciones necesarias están creadas
- La cardinalidad es correcta (generalmente 1:N)
- La dirección de filtro es "Única" en el 95% de casos
- No hay relaciones N:N directas
- Las columnas relacionadas tienen el mismo tipo de datos
- No hay valores nulos en las columnas del lado "1"
- Cada tabla de hechos se conecta a todas sus dimensiones
Prueba práctica
Crea una visualización simple:
- Tabla con Productos[Nombre] y SUM(Ventas[Monto])
- Agrega un segmentador por Categorías[Nombre]
- Filtra por una categoría
Resultado esperado: Solo ves productos de esa categoría con sus ventas.
Si no funciona: Revisa las relaciones Categorías → Productos → Ventas.
Atajos de teclado en vista Modelo
| Atajo | Acción |
|---|---|
| Arrastrar columna | Crear relación |
| Doble clic en relación | Editar propiedades |
| Delete | Eliminar relación seleccionada |
| Ctrl + A | Seleccionar todas las tablas |
| Ctrl + Z | Deshacer |
Ejercicio práctico
Dado este escenario de una universidad online:
Tablas:
- Inscripciones (EstudianteID, CursoID, FechaInscripción, Calificación)
- Estudiantes (EstudianteID, Nombre, Email, País)
- Cursos (CursoID, Título, CategoríaID, Duración)
- Categorías (CategoríaID, Nombre)
- Fechas (Fecha, Año, Mes, Trimestre)
Pregunta: ¿Qué relaciones crearías?
Respuesta:
- Inscripciones[EstudianteID] → Estudiantes[EstudianteID] (N:1, Única)
- Inscripciones[CursoID] → Cursos[CursoID] (N:1, Única)
- Inscripciones[FechaInscripción] → Fechas[Fecha] (N:1, Única)
- Cursos[CategoríaID] → Categorías[CategoríaID] (N:1, Única)
Puntos clave de esta lección
- Una relación conecta dos tablas basándose en columnas con valores coincidentes
- Cardinalidad 1:N es la más común (dimensión → hecho)
- Evita relaciones N:N; usa una tabla puente en su lugar
- Dirección de filtro única es lo recomendado el 95% del tiempo
- Usa IDs únicos para crear relaciones, no nombres
- Los tipos de datos deben coincidir en ambas columnas
- Valida tus relaciones creando visualizaciones de prueba
Próxima lección
Ahora que sabes crear relaciones individuales, en la siguiente lección aprenderás sobre el modelo estrella: la estructura más eficiente para organizar todas tus tablas y relaciones, siguiendo las mejores prácticas de BI profesional.
Quiz de comprensión
- ¿Qué significa cardinalidad "1:N" y cuándo se usa?
- ¿Por qué deberías evitar relaciones N:N y cuál es la solución?
- ¿Cuál es la diferencia entre dirección de filtro "Única" y "Ambas"?
- Si tienes una tabla Ventas y una tabla Productos, ¿qué columna usarías para crear la relación? ¿ProductoNombre o ProductoID? ¿Por qué?
Completaste esta leccion?
Marca esta leccion como completada. Tu progreso se guardara en tu navegador.