none
Dimensão Multi Valor??? RRS feed

  • 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
    terça-feira, 8 de junho de 2010 14:14

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]
    terça-feira, 8 de junho de 2010 19:28
  • 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


    terça-feira, 8 de junho de 2010 20:04
  • Andre,

    Tente acrescentar o ID do segmento na sua tabela Fato.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quarta-feira, 9 de junho de 2010 18:58
  • 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
    quinta-feira, 10 de junho de 2010 00:59
  • 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]
    quinta-feira, 10 de junho de 2010 17:12
  • Andrersas,

    Acredito que o segmento seja por causa do ramo do cliente? Poderia incluir na dimensão cliente.

     


    Marcelo Garcia skype: marcelogarcia
    segunda-feira, 14 de junho de 2010 13:42
  • 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.com

    Como 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
    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
    quarta-feira, 14 de julho de 2010 17:22