Entre dos tablas podemos crear tantas relaciones como deseemos, pero solo una puede estar activa en un momento dado. Esto significa que, cuando llevemos campos de dichas tablas a un objeto visual, el “join” de las tablas involucradas que la máquina DAX va a generar de forma automática para hacer los cálculos va a realizarse usando como claves los valores de los campos que definen la relación activa y no otra. Por ejemplo, en nuestro modelo de datos podemos tener dos relaciones entre la tabla Calendar y la tabla Sales:
La relación que se muestra con línea continua es la relación activa (que, aunque no se aprecia en la imagen, es la que une los campos Calendar[Date] y Sales[Order Date]), mientras que la relación que se muestra con línea discontinua es una relación no activa uniendo los campos Calendar[Date] y Sales[Delivery Date], y no se va a usar por defecto para realizar los cálculos.
Si quisiéramos mostrar las ventas por año creando una matriz a la que llevásemos los campos Calendar[Date] y nuestra medida [Sales] (que ya sabemos que simplemente suma la columna Sales[Amount], el resultado sería el siguiente:
Estos valores se han calculado usando la relación activa, lo que significa que, en 2015, por ejemplo, se vendieron productos o servicios por valor de 188.679 €. O, dicho de otro modo, que la suma de la columna Sales[Amount] para aquellas ventas en las que el campo Sales[Order Date] contenía una fecha de 2015 fue de 188.697 €.
Pero podemos forzar que el cálculo de las ventas se realice usando la relación existente entre Calendar[Date] y Sales[Delivery Date]. Esto puede conseguirse con la función USERELATIONSHIP como argumento de CALCULATE:
CALCULATE(
[Sales],
USERELATIONSHIP(
'Calendar'[Date],
Sales[Delivery Date]
)
)
Si llevamos esta medida a la matriz anterior, el resultado es el mostrado a continuación:
Ahora vemos que, en 2015, se entregaron ventas por valor de 185.896 €. O, dicho con otras palabras, que la suma de la columna Sales[Amount] para aquellas ventas en las que el campo Sales[Delivery Date] contenía una fecha de 2015 fue de 185.896 €.