(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

DP-600: implementar role-playing tables en modelos semánticos

João Barros 20 de October de 2026 4 min de lectura

Te voy a enseñar cómo implementar role-playing tables (tablas que representan la misma entidad en diferentes roles, por ejemplo, OrderDate y ShipDate que apuntan a la misma dimensión de Fecha) en modelos semánticos en el contexto del examen DP-600. Esta competencia es importante porque mejora la modelización temporal-relacional y la calidad de los análisis sin duplicar datos ni crear ambigüedad en las métricas.

Lo que necesitas saber

Una role-playing table permite usar una única dimensión (por ejemplo, una dimensión de Fecha) para múltiples roles en el modelo de datos. En lugar de duplicar la tabla (lo que aumenta el mantenimiento y el riesgo de inconsistencias), se crean varias relaciones entre la tabla fact y la misma dimensión, cada relación representando un rol distinto (OrderDate, ShipDate, PaymentDate, etc.).

Ejemplo conceptual: tienes una tabla Orders con columnas OrderDateKey y ShipDateKey. En lugar de crear dos tablas Date_Order y Date_Ship, enlazas ambas claves a la misma tabla Date. Luego controlas qué relación está activa para el cálculo de medidas o usas funciones DAX para forzar el contexto temporal deseado.

Cómo funciona en la práctica

Pasos prácticos para implementar role-playing tables en un modelo semántico en Power BI/Fabric (Model view o Semantic Model):

  1. Preparar la dimensión: asegura que la tabla Date tiene una clave única (DateKey) y las columnas necesarias (Date, Year, Month, FiscalYear...).
  2. Enlazar las claves: crea relaciones entre Orders[OrderDateKey] → Date[DateKey] y Orders[ShipDateKey] → Date[DateKey]. Típicamente solo una de esas relaciones queda activa por defecto (active relationship).
  3. Decidir relaciones activas/inactivas: mantén solo una relación activa (por norma la más usada, p. ej.: OrderDate). Las otras quedan inactivas para evitar ambigüedad en el momento en que el motor de cálculo resuelve filtros automáticamente.
  4. Medidas explícitas con USERELATIONSHIP: para usar la relación inactiva en una medida específica, utiliza USERELATIONSHIP en DAX para activar temporalmente esa relación durante el cálculo.

Ejemplo DAX de medida que usa ShipDate (relación inactiva):

Sales by Ship Date =
CALCULATE(
    SUM(Orders[SalesAmount]),
    USERELATIONSHIP(Orders[ShipDateKey], Date[DateKey])
)

Notas importantes:

  • Si necesitas comparar periodos con diferentes roles (p. ej.: ventas por OrderDate vs entregas por ShipDate), crea medidas separadas que usen explícitamente la relación deseada.
  • En modelos grandes, usar muchas relaciones inactivas puede complicar el mantenimiento; documéntalas y estandariza nombres de medidas para clarificar el rol temporal usado.

Errores comunes

1) Hacer todas las relaciones activas: crear múltiples relaciones activas entre la misma tabla puede causar ambigüedad y errores de modelización — la mayoría de herramientas no permiten múltiples relaciones activas para la misma columna clave y eso conduce a resultados inesperados si se manipula de forma imprudente.

2) No usar USERELATIONSHIP cuando es necesario: confiar únicamente en la relación activa puede llevar a métricas incorrectas cuando se pretende analizar por un rol temporal alternativo. Siempre que la relación relevante es inactiva, usa USERELATIONSHIP o alternativas (como TREATAS) en las medidas.

3) Duplicar la dimensión sin necesidad: crear múltiples copias físicas de la tabla Date aumenta el coste de almacenamiento y complica actualizaciones/refresh; solo se justifica en escenarios muy específicos (p. ej.: rendimiento extremo o requisitos de seguridad separados).

Cómo practicar

Practica este patrón en un pequeño proyecto: importa una tabla Orders (con OrderDateKey, ShipDateKey) y una tabla Date. Crea las dos relaciones con Date, mantiene una activa y crea al menos dos medidas de suma (Sales by Order Date y Sales by Ship Date) usando CALCULATE + USERELATIONSHIP. Valida los resultados con visuales de línea por mes y compara los comportamientos.

Recursos oficiales gratuitos para entrenamiento:

  • Practice Assessment oficial de Microsoft (gratuito) — úsalo para evaluar tus lagunas; no es un sustituto de la práctica.
  • Study guide oficial del examen DP-600 en Microsoft Learn (gratuito) — consulta las secciones sobre modelización semántica y DAX.

En resumen

  • Role-playing tables permiten usar la misma dimensión para múltiples roles sin duplicar datos.
  • Mantén solo una relación activa y usa USERELATIONSHIP para medidas que necesiten relaciones inactivas.
  • Evita duplicaciones innecesarias de la dimensión; documenta relaciones y medidas para mantener la claridad.
  • Practica con un modelo Orders + Date y valida las medidas en visuales temporales; usa los recursos oficiales de Microsoft para complementar el estudio.