Compartilhar via


Função USERELATIONSHIP (DAX)

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

Sintaxe

USERELATIONSHIP(<columnName1>,<columnName2>)

Parâmetros

  • columnName1
    O nome de uma coluna existente, usando a sintaxe DAX padrão e totalmente qualificado, que normalmente representa os muitos lados da relação a serem usados; se os argumentos forem atribuídos na ordem inversa, a função os alternará 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 qualificado, que normalmente representa o único lado ou o lado de pesquisa da relação a ser usado; se os argumentos forem atribuídos na ordem inversa, a função os alternará antes de usá-los. Esse argumento não pode ser uma expressão.

Valor de retorno

A função não retorna nenhum valor; a função só habilita a relação indicada enquanto durar o cálculo.

Comentários

  1. USERELATIONSHIP pode ser usado somente em funções que possuem um filtro como argumento, por exemplo: as funções CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD.

  2. USERELATIONSHIP utiliza relações existentes no modelo, identificando as relações por suas colunas de ponto final.

  3. Em USERELATIONSHIP, o status de uma relação não é importante; ou seja, o uso da função não é afetado se a relação está ativa ou não. Mesmo se a relação estiver inativa, ela será usada e anulará as outras relações ativa que podem estar presentes no modelo, mas não mencionadas nos argumentos de função.

  4. Se alguma coluna nomeada como argumento não fizer parte de uma relação ou se pertencer a relações diferentes, será retornado um erro.

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

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

  7. Podem ser aninhadas até 10 funções USERELATIONSHIP; porém, sua expressão pode ter um nível mais avançado de aninhamento. Por exemplo: a expressão de exemplo a seguir é aninhada a 3 níveis abaixo, mas somente 2 para USEREALTIONSHIP: =CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).

Exemplo

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

Para calcular a soma de vendas pela Internet e permitir a segmentação por ShippingDate em vez de OrderDate tradicional, você precisa criar uma medida [InternetSales por ShippingDate] usando a expressão a seguir:

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

No PowerPivot: arraste sua nova medida para a área Valores no painel direito, arraste a coluna InternetSales[ShippingDate] para a área Rótulos de Linha; você terá as vendas pela Internet divididas por data de envio em vez de por data do pedido, como é geralmente mostrado nestes exemplos.

Para que esse exemplo funcione, é preciso que existam as relações entre InternetSales[ShipmentDate] e DateTime[Date] e que elas não sejam a relação ativa; além disso, é preciso que exista a relação entre InternetSales[OrderDate] e DateTime[Date] e que ela seja a relação ativa.