O trem da função USERELATIONSHIP no Power BI é um negócio que, se cê não cuidar, vai bagunçar os relacionamentos das suas tabelas, tipo aquelas fofocas que rolam no interior que só vão aumentando. Mas calma, que eu te explico como ela funciona direitinho!
O que é essa tal de USERELATIONSHIP?
Imagina que você tá em uma festa de família, e lá tem aquele tanto de parente que você nem sabe de onde veio. A USERELATIONSHIP é tipo aquele tio que aparece só de vez em quando pra fazer as coisas funcionarem. Ela ativa um relacionamento entre duas tabelas que você já definiu no seu modelo de dados, mas que tá dormindo, quietinho lá no canto. Quando você usa essa função, é como se você acordasse o relacionamento e falasse: “Ô, cumpadi, agora é sua vez de trabalhar!”
Como que usa?
O formato dela é simples, mas tem um poder danado:
USERELATIONSHIP(Tabela1[ColunaA], Tabela2[ColunaB])
Ou seja, você fala pra função: “Ativa esse relacionamento aqui, ó, entre a Tabela1[ColunaA] e a Tabela2[ColunaB]“.
Bora pros exemplos, sô?
- A tal da festa de vendas
Você tem uma tabela de vendas e uma tabela de datas. Só que tem dois tipos de data: a Data da Venda e a Data da Entrega. O que cê faz?
Usa o USERELATIONSHIP pra calcular as vendas baseadas na data de entrega:
CALCULATE(SUM(Vendas[TotalVenda]), USERELATIONSHIP(Vendas[DataEntrega], Calendario[Data]))
É tipo: “Ô, tabela de datas, se entenda com a data de entrega e não com a data da venda, pelo amor de Deus!”
- Cadastro de funcionários
Aqui, cê tem a tabela de funcionários e a tabela de contratos. Cada funcionário pode ter mais de um contrato. Cê quer calcular o salário base do contrato mais recente. Então usa o USERELATIONSHIP pra ativar o relacionamento com a data do contrato:
CALCULATE(SUM(Contratos[Salario]), USERELATIONSHIP(Funcionarios[DataContrato], Contratos[Data]))
- Promoções de supermercado
Tem uma tabela de produtos e outra de promoções. Cê quer ver quanto que vendeu durante as promoções, mas as datas de promoção e de venda são diferentes. Ativa o relacionamento com as datas da promoção:
CALCULATE(SUM(Vendas[Quantidade]), USERELATIONSHIP(Vendas[DataVenda], Promocoes[DataPromo]))
- Relação de fretes
Você tem a tabela de pedidos e a de fretes. A data de envio e de entrega são diferentes. Quer saber os pedidos entregues? Acorda o relacionamento certo:
CALCULATE(COUNTROWS(Pedidos), USERELATIONSHIP(Pedidos[DataEntrega], Fretes[DataEntrega]))
- Treinamento de funcionários
Cê tem a tabela de funcionários e a de treinamentos. Quer ver o tanto de funcionário que fez treinamento nos últimos meses? Ativa o relacionamento da data de treinamento:
CALCULATE(COUNTROWS(Funcionarios), USERELATIONSHIP(Funcionarios[DataTreinamento], Treinamentos[Data]))
- Datas de renovação de contrato
Aqui, a tabela de contratos tem a data de início e de renovação. Cê quer ver quais contratos foram renovados este ano:
CALCULATE(COUNTROWS(Contratos), USERELATIONSHIP(Contratos[DataRenovacao], Calendario[Data]))
- Controle de férias
Tem uma tabela de funcionários e uma de férias. A data de início e término das férias são importantes, então usa o USERELATIONSHIP pra calcular os funcionários que voltaram ao trabalho:
CALCULATE(COUNTROWS(Funcionarios), USERELATIONSHIP(Funcionarios[DataRetorno], Ferias[DataRetorno]))
- Aniversários na empresa
A tabela de funcionários tem a data de admissão e a data de nascimento. Cê quer ver o pessoal que faz aniversário em outubro? Ativa o relacionamento com a data de nascimento:
CALCULATE(COUNTROWS(Funcionarios), USERELATIONSHIP(Funcionarios[DataNascimento], Calendario[Data]))
- Histórico de promoções internas
Cê tem uma tabela de promoções e quer ver quais funcionários foram promovidos. Usa o relacionamento com a data da promoção:
CALCULATE(COUNTROWS(Promocoes), USERELATIONSHIP(Promocoes[Data], Calendario[Data]))
- Controle de produção
Na tabela de produção, tem a data de início e de término de cada processo. Quer saber os processos finalizados em setembro? Ativa o relacionamento da data de término:
CALCULATE(COUNTROWS(Producao), USERELATIONSHIP(Producao[DataTermino], Calendario[Data]))
Moral da história:
A função USERELATIONSHIP é aquele jeitinho esperto de fazer duas tabelas se falarem na hora que cê precisa, sem atrapalhar os outros relacionamentos que já tão rolando. É como ajustar uma antena de TV pra pegar o canal certinho: se fizer direito, a imagem fica boa. Agora, se fizer errado, dá uma bagunça danada!
E não esquece: é sempre bom testar os relacionamentos pra não dar nó na cabeça!