Compartir a través de


USERELATIONSHIP

Se aplica a:columna Calculadatabla calculadaMedidacálculo visual

Especifica la relación que se va a usar en un cálculo específico como la que existe entre columnName1 y columnName2.

Sintaxis

USERELATIONSHIP(<columnName1>,<columnName2>)

Parámetros

Término Definición
columnName1 El nombre de una columna existente, utilizando la sintaxis DAX estándar y completa, que normalmente representa el lado de la relación que se va a usar; si los argumentos se proporcionan en orden inverso, la función los intercambiará antes de usarlos. Este argumento no puede ser una expresión.
columnName2 El nombre de una columna existente, utilizando la sintaxis DAX estándar y completa, que normalmente representa el lado uno o el lado de búsqueda de la relación que se va a usar; si los argumentos se proporcionan en orden inverso, la función los intercambiará antes de usarlos. Este argumento no puede ser una expresión.

Valor devuelto

La función no devuelve ningún valor; la función solo habilita la relación indicada durante el cálculo.

Notas

  • USERELATIONSHIP solo se puede usar en funciones que toman un filtro como argumento, por ejemplo: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD y TOTALYTD funciones.

  • USERELATIONSHIP no se puede usar cuando se define la seguridad de nivel de fila para la tabla en la que se incluye la medida. Por ejemplo, CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey])) devolverá un error si se define la seguridad de nivel de fila para DimCustomer.

  • USERELATIONSHIP usa relaciones existentes en el modelo, identificando las relaciones por sus columnas de punto final.

  • En USERELATIONSHIP, el estado de una relación no es importante; es decir, si la relación está activa o no afecta al uso de la función. Incluso si la relación está inactiva, se usará e invalidará cualquier otra relación activa que pueda estar presente en el modelo, pero no se menciona en los argumentos de función.

  • Se devuelve un error si alguna de las columnas denominadas como argumento no forma parte de una relación o los argumentos pertenecen a relaciones diferentes.

  • Si se necesitan varias relaciones para unir la tabla A a la tabla B en un cálculo, cada relación debe indicarse en una función de USERELATIONSHIP diferente.

  • Si CALCULATE expresiones están anidadas y más de una expresión CALCULATE contiene una función USERELATIONSHIP, el USERELATIONSHIP más interno es el que prevalece en caso de conflicto o ambigüedad.

  • Se pueden anidar hasta 10 funciones USERELATIONSHIP; sin embargo, la expresión puede tener un nivel más profundo de anidamiento, es decir, . La siguiente expresión de ejemplo está anidada 3 niveles de profundidad, pero solo 2 para USERELATIONSHIP: =CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).

  • Para las relaciones de 1 a 1, USERELATIONSHIP solo activará la relación en una dirección. En concreto, los filtros solo podrán fluir de columnName2tabla a columnName1tabla. Si se desea el filtrado cruzado bidireccional, se pueden usar dos USERELATIONSHIPs con direccionalidad opuesta en el mismo cálculo. Por ejemplo, CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K])).

Ejemplo

En el ejemplo siguiente se muestra cómo invalidar la relación predeterminada, activa y entre las tablas InternetSales y DateTime. La relación predeterminada existe entre la columna OrderDate, en la tabla InternetSales y la columna Date, en la tabla DateTime.

Para calcular la suma de las ventas por Internet y permitir la segmentación por ShippingDate en lugar de OrderDate tradicional, cree la medida , [InternetSales by ShippingDate] mediante la expresión siguiente:

= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))

Las relaciones entre InternetSales[ShipmentDate] y DateTime[Date] deben existir y no deben ser la relación activa; además, la relación entre InternetSales[OrderDate] y DateTime[Date] debe existir y debe ser la relación activa.