USERELATIONSHIP
aplica-se a:coluna calculada
tabela calculada
medida
cálculo visual
Especifica a relação a ser usada em um cálculo específico como aquele 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 DAX padrão e totalmente qualificado, que geralmente representa o lado muitos da relação a ser usada; se os argumentos forem fornecidos 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 de DAX padrão e totalmente qualificada, que geralmente representa o lado ou o lado de pesquisa da relação a ser usada; se os argumentos forem fornecidos na ordem inversa, a função os trocará 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 habilita apenas a relação indicada durante o cálculo.
Comentários
USERELATIONSHIP só pode ser usado em funções que utilizam 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 é incluída. Por exemplo,
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
retornará um erro se a segurança no nível da linha for definida para DimCustomer.USERELATIONSHIP usa relações existentes no modelo, identificando relações por suas colunas de ponto final.
Em USERELATIONSHIP, o status de uma relação não é importante; ou seja, se a relação está ativa ou não 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 qualquer uma das colunas nomeadas como um argumento não fizer parte de uma relação ou 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 de USERELATIONSHIP diferente.
Se CALCULATE expressões estiverem aninhadas e mais de uma expressão CALCULATE contiver uma função USERELATIONSHIP, a USERELATIONSHIP mais interna será aquela que prevalece em caso de conflito ou ambiguidade.
Até 10 funções USERELATIONSHIP podem ser aninhadas; no entanto, sua expressão pode ter um nível mais profundo de aninhamento, ou seja, a expressão de exemplo a seguir é aninhada com 3 níveis de profundidade, mas apenas 2 para USERELATIONSHIP:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, 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 de tabelacolumnName2 para columnName1's. Se a filtragem cruzada bidirecional for desejada, dois USERELATIONSHIPs com direcionalidade oposta poderão ser usados 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, entre InternetSales e tabelas DateTime. A relação padrão existe entre a coluna OrderDate, na tabela InternetSales e a coluna Date, na tabela DateTime.
Para calcular a soma das vendas pela Internet e permitir o fatiamento por ShippingDate em vez do OrderDate tradicional, 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 deve ser a relação ativa.