USERELATIONSHIP
Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual
Especifica a relação a ser usada em um cálculo específico como a que existe entre columnName1 e columnName2.
Sintaxe
USERELATIONSHIP(<columnName1>,<columnName2>)
Parâmetros
Termo | Definição |
---|---|
columnName1 |
O nome de uma coluna existente, usando sintaxe DAX padrão e totalmente qualificada, que geralmente representa os muitos lados da relação a ser usada; Se os argumentos forem dados em ordem inversa, a função irá trocá-los antes de usá-los. Este argumento não pode ser uma expressão. |
columnName2 |
O nome de uma coluna existente, usando sintaxe 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 dados em ordem inversa, a função irá trocá-los antes de usá-los. Este argumento não pode ser uma expressão. |
Valor de retorno
A função não retorna nenhum valor; A função só permite a relação indicada durante o cálculo.
Observações
USERELATIONSHIP só pode ser usado em funções que tomam um filtro como argumento, por exemplo: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD funções.
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 relações existentes no modelo, identificando relações por suas colunas de ponto final.
Em USERELATIONSHIP, o estatuto 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 argumento não fizer parte de um relacionamento ou se os argumentos pertencerem a relações diferentes.
Se forem necessárias várias relações para unir a tabela A à tabela B num cálculo, cada relação deve ser indicada numa função USERELATIONSHIP diferente.
Se CALCULATE expressões estiverem aninhadas e mais de uma expressão CALCULATE contiver uma função USERELATIONSHIP, então a USERELATIONSHIP mais interna é a que prevalece em caso de conflito ou ambiguidade.
Até 10 USERELATIONSHIP funções 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 está aninhada em 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 relacionamentos 1-para-1, USERELATIONSHIP ativará o relacionamento apenas em uma direção. Em particular, os filtros só poderão fluir de tabela columnName2para columnName1tabela 's. Se a filtragem cruzada bidirecional for 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 exemplo a seguir mostra como substituir a relação padrão, ativa, entre as tabelas InternetSales e 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 da tradicional OrderDate, 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] e DateTime[Date] devem existir e não devem ser a relação ativa; também, a relação entre InternetSales[OrderDate] e DateTime[Date] deve existir e deve ser a relação ativa.