USERELATIONSHIP
aplica-se a:coluna calculadatabela calculadaMeasurecálculo visual
Especifica a relação a ser usada em um cálculo específico como a que existe entre columnName1 and columnName2.
Sintaxe
USERELATIONSHIP(<columnName1>,<columnName2>)
Parâmetros
Termo | Definição |
---|---|
columnName1 |
O nome de uma coluna existente, usando a sintaxe de DAX padrão and totalmente qualificado, que geralmente representa o lado muitos da relação a ser usada; if 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 DAX padrão and totalmente qualificado, que geralmente representa o lado or lado da relação a ser usada; if 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. |
Retornar value
A função não retorna value; a função habilita apenas a relação indicada para o duration do cálculo.
Comentários
USERELATIONSHIP só pode ser usado em funções que tomam um filter como argumento, por exemplo: funções CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTDandTOTALYTD.
USERELATIONSHIP não pode ser usado quando a segurança em nível de linha é definida para a tabela na qual o measure está incluído. Por exemplo,
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
retornará um errorif segurança de nível de linha é 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 é not importante; ou seja, se a relação está ativa ornotnot afetar o uso da função. Even if a relação estiver inativa, ela será usada and substituirá quaisquer outras relações ativas que possam estar presentes no modelo, mas not mencionadas nos argumentos da função.
Um error é retornado if qualquer uma das colunas nomeadas como argumento é not parte de uma relação or os argumentos pertencem a relações diferentes.
If várias relações são necessárias para unir a tabela A à tabela B em um cálculo, cada relação deve ser indicada em uma função de USERELATIONSHIP diferente.
If CALCULATE expressões são aninhadas, and mais de uma expressão CALCULATEcontains uma função USERELATIONSHIP, então a USERELATIONSHIP mais interna é aquela que prevalece no caso de um conflito or 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 sample a seguir é aninhada 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, filters só poderá fluir de tabelacolumnName2 para columnName1. If filtragem cruzada bidirecional é desejada, dois USERELATIONSHIPs com direcionalidade oposta podem ser usados no mesmo cálculo. Por exemplo,
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
.
Exemplo
O sample a seguir mostra como substituir a relação padrão, ativa e entre as tabelas InternetSales and DateTime. A relação padrão existe entre a coluna OrderDate, na tabela InternetSales, and a coluna Date, na tabela DateTime.
Para calculate o sum de vendas pela Internet and permitir o fatiamento por ShippingDate em vez do OrderDate tradicional, crie measure, [InternetSales by ShippingDate] usando a seguinte expressão:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
As relações entre InternetSales[ShipmentDate] and DateTime[Date] devem existir and deve not ser a relação ativa; além disso, a relação entre InternetSales[OrderDate] and DateTime[Date] deve existir and deve ser a relação ativa.