Lección 13 de 36Modelado de Datos

Relaciones y cardinalidad

Conecta tus tablas con relaciones correctas.

20 minutos

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] con Productos[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:

  1. Ve a la vista Modelo (icono con tres cajas conectadas)
  2. Arrastra la columna de una tabla hacia la columna correspondiente de otra tabla
  3. Configura los parámetros de la relación
  4. 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

  1. Ventas (tabla de hechos)

    • VentaID, FechaID, ProductoID, ClienteID, TerritorioID, Cantidad, Monto
  2. Productos (dimensión)

    • ProductoID, Nombre, CategoríaID, Precio
  3. Categorías (dimensión)

    • CategoríaID, Nombre, Descripción
  4. Clientes (dimensión)

    • ClienteID, Nombre, Segmento, CiudadID
  5. Fechas (dimensión)

    • FechaID, Fecha, Año, Mes, Trimestre, Día
  6. 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:

  1. Tabla con Productos[Nombre] y SUM(Ventas[Monto])
  2. Agrega un segmentador por Categorías[Nombre]
  3. 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:

  1. Inscripciones (EstudianteID, CursoID, FechaInscripción, Calificación)
  2. Estudiantes (EstudianteID, Nombre, Email, País)
  3. Cursos (CursoID, Título, CategoríaID, Duración)
  4. Categorías (CategoríaID, Nombre)
  5. Fechas (Fecha, Año, Mes, Trimestre)

Pregunta: ¿Qué relaciones crearías?

Respuesta:

  1. Inscripciones[EstudianteID] → Estudiantes[EstudianteID] (N:1, Única)
  2. Inscripciones[CursoID] → Cursos[CursoID] (N:1, Única)
  3. Inscripciones[FechaInscripción] → Fechas[Fecha] (N:1, Única)
  4. 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

  1. ¿Qué significa cardinalidad "1:N" y cuándo se usa?
  2. ¿Por qué deberías evitar relaciones N:N y cuál es la solución?
  3. ¿Cuál es la diferencia entre dirección de filtro "Única" y "Ambas"?
  4. 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.