Las funciones DAX detectan automáticamente las relaciones activas entre tablas. Excepto la función CALCULATE que se puede aplicar entre relaciones inactivas, por ejemplo considera las relaciones de la figura de abajo la cual tiene dos relaciones inactivas y una activa.

Relaciones Activas e inactivas

Relaciones entre tabla fecha y tabla Internet Sales

 

 

 

 

 

 

 

 

La relación activa utiliza la relación a través del campo OrderDate de la tabla Internet Sales. Las dos fórmulas siguientes utilizan esa relación para realizar el cálculo en la tabla Date:

  Date_Ordered_Lines = COUNTROWS ( RELATEDTABLE ( 'Internet Sales' ) )

  Date_Ordered_Lines = CALCULATE ( COUNTROWS ( 'Internet Sales' ) )

El resultado de ambas columnas calculadas es el siguiente:

Columnas Calculadas con relaciones entre tablas.

 

Las otras dos relaciones creadas entre la tabla Date y la tabla Internet Sales están inactivas. Para utilizar esas relaciones en las medidas y columnas calculadas, tenemos que utilizar la función USERELATIONSHIP, esta función tiene la siguiente sintaxis:

   USERELATIONSHIP ( <column1>; <column2> )

 

La relación activa se sustituye por la relación inactiva que se especifica en los parámetros de la función, siempre y cuando exista una relación entre los campos especificados en la función. Si no existe esa relación la función retornará un error. Por lo tanto, podemos calcular el número de fechas de embarque a través de la relación entre la columna Date de la tabla Date con la columna ShipDate de la tabla InternetSales, de la siguiente forma:

  Date_Shipped_Lines = 

            COUNTROWS (

                        CALCULATETABLE ( 

                                          'Internet Sales',

                                USERELATIONSHIP ( 'Internet Sales'[ShipDate];'Date'[Date] )

                                       )

                     )

userelationship inactive relationMuy importante de la función USERELATIONSHIP, es tener en cuenta que por cada relación que se quiera utilizar del modelo habrá que poner una función sea una relación activa o inactiva.

En el otro lado de la relación,es decir, en la tabla Internet Sales, se puede crear una columna calculada Order Day Name usando las dos funciones RELATED o CALCULATE. Las siguientes fórmulas retornan el mismo resultado:

Order_Day_Name = RELATED(  'Date'[Date] )

Order_Day_Name = CALCULATE ( VALUES ( 'Date'[Date] )