Ir para conteúdo
  • 0

Inativação de relacionamento na medida


delmarmachado
Ir para solução Solucionado por Nelson Kobayashi ,

Pergunta

  • Alunos

Boa tarde a todos.

Em meu BI, eu tenho uma tabela chamada dMascaraDRE e outra chamada fVendasDRE. A tabela dMascaraDRE se relaciona através da coluna CodMascara com a tabela fVendasDRE, também pela coluna CodMascara.

image.png.c4446200bf9df3c24d25aee685038e7d.png

Contudo, elas também precisarão se relacionar pela coluna CodMascara na dMascaraDRE e CodMascaraCusto na fVendasDRE. Assim, devido a limitação do Power BI, este relacionamento está inativo.

image.png.ffc6170e3131290fa85815c55e921901.png

Para ativá-lo, eu posso usar o USERELATIONSHIP diretamente na medida, porém, nessa medida, eu gostaria também de inativar o relacionamento entre a dMascaraDRE e a fVendasDRE, através das colunas CodMascara.

Alguém sabe como posso na mesma medida, inativar um relacionamento e ativar um outro?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Olá @delmarmachado!

 

Teria que ver mais detalhes dos relacionamentos entre as suas tabelas, formato da máscara e medidas que serão usadas ... Mas de forma geral, para "inativar" um relacionamento usamos a função ALL ou ALLSELECTED.

 

O termo mais correto nesse caso é "desconsiderar o contexto" em vez de "inativar um relacionamento".

 

Vamos supor que seja esse o cenário:
- “Quero usar o relacionamento de MASK2 em vez de usar o relacionamento de MASK1”

 

Considerando estes relacionamentos (observe que o relacionamento de MASK2 com a tabela fato está INATIVO)

image.png.96b3d84b1c4cc86460fb71181080201f.png

 

Então montamos duas tabelas, uma com o contexto de máscara da dimensão MASK1 e outra tabela com o contexto de máscara da dimensão MASK2, veja como elas reagem de forma diferente quando se usam a função USERELATIONSHIP (para ativar o relacionamento entre MASK2 e a tabela fato) e ALL (para desconsiderar o contexto de filtro de MASK1):

image.png.7cdf0840af6b70e1e2c7a25f02b7b4ae.png

 

Na imagem acima, no Caso (a) vemos uma MEDIDA [TOT VALOR MASK1] de soma normal em um contexto com relacionamento ativo normal.

Caso (b) : Se usarmos a mesma MEDIDA [TOT VALOR MASK1] em um outro contexto da MASK2 com o relacionamento inativo, vemos que todos os valores ficam em 50.902,00

 

Agora usamos uma MEDIDA [TOT VALOR MASK2] que ativa o relacionamento entre a dimensão MASK2 e a tabela fDADOS e também desconsidera todos os contextos de filtro da MASK1 “ALL(MASK1)”:

 

Caso (c): A MEDIDA [TOT VALOR MASK2] age no contexto de MASK1 como se o relacionamento entre MASK1 e fDADOS estivesse inativo e só considera o relacionamento entre MASK2 e fDADOS, que é o Caso(d).

Veja mais detalhes sobre relacionamentos e contextos nessa matéria do blog do mestre Kasrspinski:

https://powerbiexperience.com/pt/guia-definitivo-sobre-relacionamentos-entre-tabelas-e-modelagem-de-dados/

 

É isso aí!

Espero ter ajudado.

 

Editado por Nelson Kobayashi
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa tarde, @Nelson Kobayashi. Tudo bem?

Então, o problema de usar ALL, é que em tela eu possuo dois filtros: por empresa e por data. No caso, se eu usar o ALL, a medida não respeitará tais filtros.

image.png.001bd8ea5364d13f811fc70619a50540.png

Conforme a medida acima, eu já fiz o USERELATIONSHIP forçando o relacionamento, mas pelo fato do outro já existir, o dado está sendo trazido em branco na matriz.

Editado por delmarmachado
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
9 minutos atrás, delmarmachado disse:

Boa tarde, @Nelson Kobayashi. Tudo bem?

Então, o problema de usar ALL, é que em tela eu possuo dois filtros: por empresa e por data. No caso, se eu usar o ALL, a medida não respeitará tais filtros.

image.png.001bd8ea5364d13f811fc70619a50540.png

Conforme a medida acima, eu já fiz o USERELATIONSHIP forçando o relacionamento, mas pelo fato do outro já existir, o dado está sendo trazido em branco na matriz.

Olá @delmarmachado.

Então, mas está estranha a sua MEDIDA...

No primeiro filtro da CALCULATE você está filtrando fVendasDRE[CODMASCARA] = "4" e no relacionamento você está forçando o relacionamento de outra coluna fVendasDRE[CODMASCARACUSTO] com outra tabela dMascaraDRE[CodMascara] ....

Os códigos são os mesmos em ambas as colunas? [CODMASCARA] e [CODMASCARACUSTO] ?

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Como eu disse, para ter uma melhor noção da dificuldade, teria que olhar o seu projeto mais a fundo, analisar os relacionamentos e os códigos que ligam as tabelas e os relacionamentos entre elas.

A Função ALL pode ser usada em uma única coluna da tabela a ser "inativada". Assim os demais relacionamentos permanecerão ativos.

Considere também usar ALLSELECTED, que é mais seletiva em relação aos contextos.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Nelson Kobayashi No caso, os relacionamentos estão da seguinte forma:

image.png.987f15db0fb296ae0912424798a7429e.png

A tabela fVendasDRE, conversa com a tabela dMascaraDRE, através de dois relacionamentos, onde um deles está inativo, conforme citei na abertura do tópico.

Assim, os outros dois relacionamentos são com os filtros que estão em tela: data e empresa.

Com isso, há a medida abaixo, contendo 3 variáveis que vão pra matriz: venda, devolução e custo.

image.png.71c2b3b702305b2becf81ac4ae624d38.png

Assim, essa medida é chamada por uma outra medida, que é a que está sendo exibida na matriz.

image.png.6dd47901e03ad9675a8a5ad6ae896fc6.png

Contudo, a matriz está exibindo a quarta linha, que é a codMascara = 4, zerada, ao invés do valor.

image.png.7b45b5a7df1490759b0794b59f1b0072.png

É aí que está o problema, essa linha tem que exibir o valor da variável CUSTO, citada na segunda imagem.

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...