Ir para conteúdo
  • 0

Inativação de relacionamento na medida


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

Pergunta

  • Membros

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
  • Membros

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
  • Membros

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
  • Membros
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
  • Membros

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
  • Membros

@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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...