Función USERELATIONSHIP

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:
 

Función USERELATIONSHIP

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:

Función USERELATIONSHIP

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:

Sales by Delivery Date = 
CALCULATE(
    [Sales],
    USERELATIONSHIP(
        'Calendar'[Date],
        Sales[Delivery Date]
    )
)

Si llevamos esta medida a la matriz anterior, el resultado es el mostrado a continuación:

Función USERELATIONSHIP

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 €.