USERELATIONSHIP

Especifica a relação a ser usada em um cálculo específico como aquela que existe entre columnName1 e columnName2.

Sintaxe

USERELATIONSHIP(<columnName1>,<columnName2>)  

Parâmetros

Termo Definição
columnName1 O nome de uma coluna existente, usando a sintaxe do DAX padrão e totalmente qualificada, que geralmente representa o lado muitos da relação a ser usada; se os argumentos forem especificados na ordem inversa, a função os trocará antes de usá-los. Esse argumento não pode ser uma expressão.
columnName2 O nome de uma coluna existente, usando a sintaxe DAX padrão e totalmente qualificada, que geralmente representa o único lado ou o lado de pesquisa da relação a ser usado; se os argumentos forem especificados na ordem inversa, a função os trocará antes de usá-los. Esse argumento não pode ser uma expressão.

Valor retornado

A função não retornará nenhum valor, mas apenas habilitará a relação indicada durante o cálculo.

Comentários

  • USERELATIONSHIP só pode ser usado em funções que usam um filtro como argumento, por exemplo: Funções CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD.

  • USERELATIONSHIP não pode ser usado quando a segurança em nível de linha é definida para a tabela na qual a medida está incluída. Por exemplo, CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey])) retornará um erro se a segurança em nível de linha for definida para DimCustomer.

  • USERELATIONSHIP usa as relações existentes no modelo, identificando as relações pelas colunas de ponto final.

  • No USERELATIONSHIP, o status de uma relação não é importante; ou seja, o fato da relação estar – ou não – ativa não afeta o uso da função. Mesmo que a relação esteja inativa, ela será usada e substituirá quaisquer outras relações ativas que possam estar presentes no modelo, mas não mencionadas nos argumentos da função.

  • Um erro será retornado se uma das colunas nomeadas como argumento não fizer parte de uma relação ou se os argumentos pertencerem a relações diferentes.

  • Se forem necessárias várias relações para unir a tabela A à tabela B em um cálculo, cada relação deverá ser indicada em uma função USERELATIONSHIP diferente.

  • Se as expressões CALCULATE forem aninhadas e mais de uma expressão CALCULATE contiver uma função USERELATIONSHIP, então a USERELATIONSHIP mais interna será aquela que prevalecerá em caso de conflito ou ambiguidade.

  • Até 10 funções USERELATIONSHIP poderão ser aninhadas. No entanto, sua expressão poderá ter um nível mais profundo de aninhamento, ou seja, a seguinte expressão de exemplo é aninhada em 3 níveis de profundidade, mas somente 2 para USEREALTIONSHIP: =CALCULATE(CALCULATE( CALCULATE( &lt;anyExpression&gt;, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).

  • Para relações de 1 a 1, USERELATIONSHIP ativará apenas a relação em uma direção. Em particular, os filtros só poderão fluir da tabela columnName2 para a tabela columnName1. Se a filtragem cruzada bi-direcional for desejada, duas funções USERELATIONSHIP com direcionalidades opostas poderão ser usadas no mesmo cálculo. Por exemplo, CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K])).

Exemplo

O exemplo a seguir mostra como substituir a relação padrão ativa existente entre as tabelas InternetSales e DateTime. Existe uma relação padrão entre a coluna OrderDate, da tabela InternetSales e a coluna Date, na tabela DateTime.

Para calcular a soma das vendas pela Internet e permitir a segmentação por ShippingDate em vez da tradicional OrderDate, crie uma medida, [InternetSales by ShippingDate], usando a seguinte expressão:

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

As relações entre InternetSales[ShipmentDate] e DateTime[date] devem existir e não devem ser a relação ativa. Além disso, a relação entre InternetSales[OrderDate] e DateTime[Date] deve existir e ser a relação ativa.