Fala, pessoal!
Tudo bem com vocês?

No post de hoje, irei explicar um cenário que ocorreu comigo tempos atrás.

Um cliente queria plotar em um mesmo eixo do gráfico a data de abertura e fechamento de um chamado. Acontece que existiam chamados que eram abertos em uma dia e fechados em outro. Logo, como fazer isso, se existiam duas colunas de datas distintas?

A solução surgiu quando descobri o poder da função USERELATIONSHIP.

Basicamente, essa função especifica qual relacionamento considerar conforme especificado nas ColumnName1 e columnName2.

Vamos aos exemplos.

Para acessar o arquivo utilizado como exemplo, clique no link abaixo.

Download Arquivo

Importe o arquivo para o Power BI.

Lembrando que a fonte de dados é o Excel.

Ao analisarmos o conteúdo da base CRM, podemos notar duas colunas: Data Abertura e Data Fechamento.

Como estamos falando de DATAS, devemos considerar a existência da tabela DCalendario.

Conforme eu já expliquei em um post anterior, vou cria-lá utilizando a função CalendarAuto.

Como não estamos lidando com as datas no nível de data / hora, vamos tipificar as colunas apenas como Data no formato dd/mm/yyyy, nas três colunas conforme abaixo.

Agora, vamos analisar os relacionamentos.

Precisamos relacionar as duas colunas de data (Data Abertura e Data Fechamento com a coluna date.

Quando vinculamos as duas tabelas, notem os relacionamentos.

A coluna Data Abertura está com o relacionamento ativo (linha) e a Data Fechamento está inativo (linha tracejada).

Eu já havia escrito um post explicando como funcionam os relacionamentos. Caso queira dar uma lida para contextualizar melhor, Clique no link abaixo.

Acesso ao post de relacionamentos

Porque isso ocorre?

No Power BI não podemos ter dois relacionamentos ativos entre as mesmas tabelas, pois como ela vai saber de qual estamos falando quando usamos em nossos cálculos?

Para contornar essa situação, utilizamos a função USERELATIONSHIP. Nela, especificamos quais colunas considerar no relacionamento.

Vamos criar duas medidas para contextualizar. Uma utilizando a data de Abertura e a outra a data de Fechamento.

Como cada linha representam um chamado aberto, basta contar quantas linhas existentes na tabela.

Para os relacionamentos ativos não precisamos usar a função USERELATIONSHIP.

Chamados Abertos = COUNTROWS(CRM)

Agora, vamos criar a medida de chamados Fechados.

Como essa coluna está com relacionamento inativo, nela precisaremos usar a função USERELATIONSHIP.

Veja como:

Chamados Fechados = CALCULATE(COUNTROWS(CRM);USERELATIONSHIP(CRM[Data Fechamento];DCalendario[Date]))

Porque aqui eu usei a função Calculate?

Porque a função USERELATIONSHIP só pode ser utilizada com funções que precisam de filtro, uma vez que ela filtra qual relacionamento será o ativo.

Vamos ver como ficou?

Notamos que todos os chamados abertos, foram fechados. Porém, conseguimos ver, no mesmo eixo de data, quando foram abertos e quando foram fechados.

Na  tabela, conseguimos ver que em 2009 foram abertos apenas dois chamados, nos dias 6 e 27/10, respectivamente.

Gostaram da dica? Tem alguma que queira a explicação?

Deixe seu comentário.

Abs.

Meirieli Ribeiro

Power BI – Função USERELATIONSHIP (Habilitando Relacionamentos)
Classificado como:                        

4 ideias sobre “Power BI – Função USERELATIONSHIP (Habilitando Relacionamentos)

  • 7 de março de 2019 em 3:35 PM
    Permalink

    Bom dia Meirieli
    Muito bom o seu exemplo, e se ao invés de eu utilizar uma coluna de data de uma mesma tabela, eu tiver que filtrar por uma terceira tabela?

    Resposta
    • 8 de março de 2019 em 12:42 AM
      Permalink

      Oi, Lucas!

      A USERELATIONSHIP é uma função que ativa o relacionamento inativo entre duas tabelas. Se há uma terceira tabela envolvida, entendo que o seu modelo é Snow Flake.

      Para isso, vc tem duas opções:

      Torna a terceira tabela parte da segunda, via join no PB ou na sua base, ou usa a função RELATED para retornar a coluna da terceira tabela na segunda.

      Abs.

      Resposta
  • 13 de fevereiro de 2019 em 3:21 PM
    Permalink

    Bom dia Meirieli ,

    Parabéns pelo conteúdo! Está me ajudando muito no meu dia a dia.

    Fiz o passo a passo, porém o no meu caso não estou conseguindo exibir o eixo.
    Realizei algumas validações, as medidas estão corretas.
    Obs: no meu caso, seria interessante exibir por mês/ano (ex: 02/2018..)

    Não sei se estou deixando passar algum detalhe. Se tiver um meio que eu possa enviar meu .pbix

    Agradeço atenção.

    Resposta
    • 13 de fevereiro de 2019 em 8:11 PM
      Permalink

      OI, Lucas!

      Na sua Calendário vc pode criar uma coluna via DAX nesse formato que você Precisa: FORMAT(SeuCampoData;”mm/yyyy”). Teste e nos informe se funcionou. Abs.

      Resposta

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *