Ir para conteúdo
  • 0

Relacionamento entre duas fatos, como resolver?


Rodrigo Schneider
Ir para solução Solucionado por Frank Figueredo ,

Pergunta

  • Alunos

Pessoal, eu cheguei no modelo abaixo depois de juntar as tabelas de tratamento e evento, mas eu não sei como resolver a tabela fatoNegativa e o relacionamento dela com a tabela fatoTratamento. Basicamente, um tratamento pode conter vários eventos e, seguindo as dicas de modelagem, eu coloquei tudo em uma tabela só. O problema é que um evento desses pode ter várias negativas. Se eu colocar as negativas na tabela fatoTratamento, a soma de valorEvento vai deixar de bater com o valor do tratamento, pois os eventos estarão repetidos. Transpondo para o exemplo de venda e itens da venda, seria como se os itens da venda tivessem sub itens.  Qual a melhor forma de resolver isso? Agradeço antecipadamente qualquer ajuda.

 

image.thumb.png.e8458af2814f57b1c5aa76d82d3118e6.png

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Olá, @Rodrigo Schneider!

Que tal assim ? Será que resolve?
 

image.thumb.png.baa7f63ecc883925596b497fc56e6635.png

 

Sem saber quais são os dados nas tabelas e quais são os relatórios e os dados e resultados que você pretende extrair dessas tabelas, só posso presumir uma solução.

Se não resolver, tente mandar um arquivo em excel com algumas amostras de dados fictícias pra gente poder fazer uns ensaios.

Também precisamos saber que tipos de gráficos e resultados você tem que extrair dessas tabelas e relacionamentos. Isso faz muita diferença na forma que os relacionamentos são definidos.

Abç.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @Nelson Kobayashi, tudo bem?
Antes de qualquer coisa, muito obrigado por sua resposta.
Na teoria, a sua modelagem e a minha funcionam do mesmo jeito. Na prática tem alguma diferença? Performance por exemplo?
Eu montei um cenário completo com o que eu preciso e coloquei anexado. A princípio está funcionando, mas como eu sei que o ideal é não
ligar duas fatos, gostaria de saber se existe outra solução. Esse tipo de situação acontece muito na minha área de negócios.
Grande abraço.

dados.xlsx exemplo.pbix

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

  • 0
  • Alunos

Olá @Rodrigo Schneider!

A diferença no modelo que propus é que eu estava imaginando que na tabela fato de Eventos, a coluna de idEvento teria registros repetidos... 

Agora, vendo o seu banco de dados, percebo que idEvento não se repete na fatoTratamento, só se repete na fatoNegativa.

Então realmente na prática não faz diferença entre um modelo e outro.

Mas ainda acho que da forma que eu propus de alguma forma vai te poupar de futuras dores de cabeça quando for extrair os dados para os relatórios.

O correto seria medir a performance do projeto usando DAX Studio que tem ferramentas pra isso.

Mas de forma intuitiva, eu suponho que ter uma tabela de dimensão para a coluna idEvento será mais performático, pois vai trabalhar como se fosse o PROCV do Excel, trazendo para o contexto do visual somente as informações que você pedir nas MEDIDAS ... 

Se tratar a coluna idEvento como se fosse uma dimensão, acho que o PowerBI vai trazer a tabela inteira de fatoTratamento para extrair só alguns dados de contexto, mesmo que o contexto seja só para um relatório de Negativas, por exemplo...

Como eu disse, só saberemos a diferença se medir com DAX Studio ... e acho que uma eventual lentidão só seria perceptível se o seu banco de dados tivesse centenas de milhares ou milhões de registros...

É isso aí.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @Nelson Kobayashi, tudo bem?

Esse solução de relacionar as duas fatos através de uma dimensão seria melhor do que mesclar as tabelas fatoTratamento e fatoNegativa e utilizar DISTINCT nas medidas aonde eu preciso somar os valores dos eventos? Ou essa segunda opção é melhor?

Mais uma vez muito obrigado.

Grande abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @Rodrigo Schneider!

De todas as opções, Mesclar as tabelas fatoTratamento e fatoNegativa pra mim parecer ser a pior de todas...

Mas é puro achismo meu, porque primeiro eu teria que analisar os resultados esperados dessa base de dados e fazer vários testes para ver se não dá nenhum problema.

Justificando o meu achismo, penso assim porque a tabela de fatoNegativa não tem as mesmas colunas que a tabela de fatoTratamento, então a mesclagem das duas colunas vai criar colunas extras no seu modelo e mais uma coluna extra só pra identificar o que é negativa e o que é tratamento.

Pra mim parece que fica mais confuso assim ... O que você acha ?

Não existe uma regra absoluta pra bater o martelo e dizer :  -"Tem que ser desse jeito!"

O correto é fazer vários testes e ajustes. Eu já tive que refazer inteirinho um relatório com 9 páginas cheio de gráficos só porque eu estava aproveitando os dados de forma errada...

Então criei uma nova cópia, testei a nova base de dados e ficou melhor ... Perdi vários dias refazendo o tal relatório, mas hoje tenho mais segurança que a base de dados não vai dar pau ... nos últimos meses ela pulou de 200 mil registros para 300 mil registros ... se eu deixasse do jeito que tava, ficaria inviável em alguns meses quando ela atingisse patamares de acima de um milhão de registros. ...

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi @Nelson Kobayashi, tudo bem?

Eu acho que talvez não tenha ficado claro no modelo, mas fatoNegativa é um sub-item da fatoTratamento.

Tratamentos, Eventos e Negativas seriam como Vendas, Itens da venda e Itens dos itens da venda (ou materiais usados para fabricar os itens).

São 3 níveis de informações no banco relacional. Tratamentos -> eventos -> negativas.

Só que a granularidade menor dos valores estaria no evento, por isso a minha dúvida, pois nas medidas eu teria que usar DISTINCT.

E essas tabelas possuem milhões de registros, por isso a minha preocupação.

Grande abraço.

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...