Inquiridor
Dimensão Multi Valor???

Pergunta
-
Pessoal,
Estou com um problema e não sei como resolver.Tenho o seguinte cenário:
Tenho uma tabela Fato de Vendas e uma uma dimensão de produtos e de segmentação de produtos, onde tenho a chave de cada produto fazendo referencia na tabela fato.
O problema é que o produto pode pertencer a "N" segmentos. Assim terá momento em que o usuário irá querer saber sobre as vendas de por exemplo de um segmento "A" onde o produto "X" pertence, e hora o usuário irá quer ver as vendas do segmento "B" onde o produto "X" também pertence.
Como devo modelar meu negócio? Não consegui estabelecer um relacionamento de 1 para N, entre a fato e os valores possiveis na dimensão de segmento.
Me ajudem,
Abraço,
Andre
Andre
Todas as Respostas
-
Andre,
Vamos lá, você possui produtos pertencentes á diversos segmentos, ou seja, o mesmo produto X poderá pertencer aos segmentos A e B?
É isso?
Cara, desta forma, você teria que trabalhar como uma dimensão por segmentos.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário] -
Junior,
É isso mesmo , o produto X pode pertencer a diversos segmentos.
Como eu poderia modelar o OLAP para atender essa demanda? Não estou conseguindo fazer isso.
Em minha base de dados tenho as tabelas produto (prod_id, prod_desc), segmento (seg_id, seg_desc) e uma terceira tabela segmentoXproduto (seg_id, prod_id). Na tabela FATO para cada venda tenho um prod_id.
Abraço,
Andre
-
-
Junior,
Foi a primeira coisa que tentei fazer, mas não deu muito certo não, pois os registros referentes aos produtos que tinham mais de um segmento definido, aumentaram dando erro no valor final.
Exemplo: Supondo que na minha fato eu tive 100 registros do produto X. Como esse produto pertence ao segmento A e B então a qtde de registros do produto X na tabela Fato passaria para 200.
Andei pesquisando algo e vi que o que tenho é uma relação de muitos para muitos, o seja, um registro na tabela fato pode ter varios registros em uma dimensão. Estou tentando mas não estou conseguindo modelar de forma atender minha necessidade.
Abraço,
Andre
Andre -
André,
Talvez você tenha que evoluir ainda mais o nível de normalização da sua base de dados, para decompor mais a estrutura e tentar deixar de forma mais horizontal os dados dispostos em suas tabelas.
Neste caso talvez seja necessário tentar de alguma forma diferenciar os produtos que possuem mais de um segmento daqueles que não possuem, acredito que um atributo poderia ajudar.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário] -
-
Bom Dia,
Esse é um caso clássico da dimensão multivalorada e existem alternativas clássicas de modelagem para resolvê-la e algumas implementações através do Analysis Services.
A primeira (e mais tentadora) é a diminuição da granularidade do fato. As vendas são por produto e por isso a chave do produto está na tabela fato. Caso as vendas fossem feitas por produto e por segmento, poderia-se registrar na fato as vendas por produto e por segmento, mas não parece ser o caso e por isso não darei mais detalhes sobre essa alternativa.
A segunda é utilizar a chamada técnica da tabela ponte (proposição do Ralph Kimball) na qual você liga a produto diretamente a tabela fato, cria uma dimensão segmento e cria uma associativa entre segmento e produto. Na hora de arrastar para o Analysis, você provavelmente irá criar algumas hierarquias (uma de produto, uma de segmento e uma segmento - produto). Assim você poderá visualizar as vendas por qualquer nível
Outra alternativa seria criar múltiplas tabelas fatos isoladas, mas não acho que seja uma boa idéia. Só deve ser utilizada em último caso.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comComo validar os nomes das colunas durante a criação de uma tabela – Parte I
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1100.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar domingo, 11 de julho de 2010 14:44
-
Andre,
já experimentou utilizar o modelo snow flake ao invés do modelo estrela? Nesse caso a dimensão Segmento se relacionaria somente com a dimensão produto.
Ficaria algo como:
DimSegmento
- IdSegmento
- Segmento
- IdProduto
DimProduto
- IdProduto
- Produto
Na tabela de Fatos teria a chave apenas da DimProduto.
Atenciosamente,
Nayron Araújo - Desenvolvedor BI - Setor de TI - Universidade Potiguar - UnP