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

PL-300: dominar relaciones, cardinalidad y dirección de filtro

João Barros 21 de July de 2026 4 min de lectura

Te voy a enseñar una competencia práctica del PL-300: crear y gestionar relaciones entre tablas en Power BI — incluyendo cardinalidad, dirección de filtro y cuándo usar relaciones inactivas. Esta capacidad es crucial en el examen y en la práctica porque garantiza que los cálculos DAX y las visualizaciones muestren resultados correctos.

Qué necesitas saber

Un modelo de datos en Power BI conecta tablas mediante relaciones. Cada relación tiene al menos tres propiedades importantes:

  • Cardinalidad: One-to-many (1:*), One-to-one (1:1) o Many-to-many (*:*). La cardinalidad define cómo se corresponden las filas entre tablas.
  • Dirección de filtro cruzado: Single (en un sentido) o Both (en ambos sentidos). Decide cómo fluyen los filtros entre tablas y afectan a medidas/visualizaciones.
  • Activa / Inactiva: Solo una relación entre dos tablas puede estar activa; las relaciones inactivas pueden usarse temporalmente con DAX (p. ej.: USERELATIONSHIP).

Ejemplo sencillo: una tabla Sales (ventas) con CustomerID y una tabla Customers con CustomerID. El escenario típico es una relación 1 (Customers) → * (Sales), dirección de filtro Single (desde Customers hacia Sales). Si también existe una tabla Dates, enlazas Dates[Date] a Sales[OrderDate] con una relación 1:* y normalmente marcas Dates como "Marked as date table" para time intelligence.

Cómo funciona / En la práctica

Aquí tienes un paso a paso práctico en Power BI Desktop para crear y ajustar relaciones correctamente:

  1. Importa las tablas: trae las tablas Sales, Customers y Dates (puedes usar el fichero de ejemplo Contoso o la sample database).

  2. Abre "Model" (Vista de Modelo) y arrastra la columna clave (por ejemplo Customers[CustomerID]) a Sales[CustomerID] para crear la relación automáticamente.

  3. Haz doble clic en la línea de la relación y define la Cardinalidad (generalmente One-to-many) y la Dirección de filtro cruzado (Single es el valor predeterminado seguro). Si tienes una dimensión y una fact table, usa Single desde el lado de la dimensión hacia la fact.

  4. Si necesitas filtrar en ambos sentidos (por ejemplo para tablas de dimensión que interactúan directamente), considera Both con cuidado — puede resolver escenarios pero también causar ambigüedades e impacto en el rendimiento.

  5. Si existen dos posibles relaciones entre las mismas tablas (p. ej.: Sales tiene OrderDate y ShipDate enlazadas a Dates), deja una relación activa (p. ej.: OrderDate) y crea la otra como inactiva. Para usar la relación inactiva en un cálculo, usa USERELATIONSHIP en DAX.

Ejemplo de medida DAX que activa temporalmente una relación inactiva entre Sales[ShipDate] y Dates[Date]:

TotalSalesByShipDate =
CALCULATE(
  SUM(Sales[SalesAmount]),
  USERELATIONSHIP(Dates[Date], Sales[ShipDate])
)

Otra función útil es CROSSFILTER, que cambia la dirección de filtro entre dos tablas dentro de un cálculo:

MeasureBothDir =
CALCULATE(
  SUM(Sales[SalesAmount]),
  CROSSFILTER(Customers[CustomerID], Sales[CustomerID], Both)
)

Nota: usar CROSSFILTER o definir relaciones en "Both" puede aumentar el coste de procesamiento; úsalo solo cuando sea necesario para la lógica del informe.

Errores comunes

  • Cardinalidad errónea: definir Many-to-many cuando existe una clave única provoca cálculos inesperados. Verifica siempre que la columna del lado "one" tenga valores únicos.
  • Direcciones Both indiscriminadas: activar Both sin comprender el flujo de filtros puede llevar a ambigüedad y a resultados incorrectos. Usa Both solo cuando entiendas las consecuencias en el modelo.
  • No usar relaciones inactivas correctamente: intentar representar dos contextos de fecha con dos relaciones activas entre Sales y Dates causa error; en su lugar, mantén una activa y usa USERELATIONSHIP para la otra.

Cómo practicar

Practica con datos reales: importa un conjunto de ventas (Sales), clientes (Customers) y calendario (Dates) y construye escenarios que requieran relaciones alternativas (OrderDate vs ShipDate). Crea medidas que usen USERELATIONSHIP y compara resultados con relaciones activas. Prueba también escenarios con dimension tables relacionadas entre sí (p. ej., Products y Categories) para entender cuándo Both es necesario.

Para la preparación del PL-300, usa el Practice Assessment OFICIAL de Microsoft (es gratuito) para evaluar en qué eres más débil. Consulta también la study guide oficial de Microsoft para el PL-300 (gratuita) — ambos proporcionan orientación sobre las skills measured. Estos recursos son la fuente correcta para práctica y planificación del estudio.

En resumen

  • Las relaciones definen cómo fluyen los filtros y agregaciones en el modelo — configura cardinalidad y dirección con intención.
  • Usa relaciones inactivas + USERELATIONSHIP para alternar entre contextos (p. ej.: OrderDate vs ShipDate).
  • Evita usar Both indiscriminadamente; puede resolver problemas pero también introducir ambigüedades y costes de rendimiento.
  • Practica con el sample dataset y usa el Practice Assessment y la study guide oficiales de Microsoft para guiar la preparación.