none
Duvida na implementação de DW RRS feed

  • Pergunta

  • Se eu quizer implementar um DW, devo primeiro criar as dimensões, comas as respectivas chaves.

    Depois construo as de factos com as chaves que se encontravam na BD operacional, ou seja, mostrando um exemplo:

    Tenho as BD oepracional:

    -Cliente(idcliente, nome)

    -Empregado(idempregado, nome)

    -Produto (idproduto, nome, preçouni)

    -Encomendas(idEncomenda, idcliente, idempregado, valortotal, quantidadetotal, dataencomenda, dataentrega, ...)

    -Linhas de Encomenda(idEncolinha, idEncomenda, idproduto, preço unitario, quantidade, ...)

     

    O meu DW vai ficar assim:

    Construindo vários jobs:

    1- Dimensão Cliente:  BD cliente-> dimcliente

    2- Dimensão Produto:  BD produto-> dimprod

    3- Dimensão empregado:  BD empregado-> dimemp

    4- Dimensão Tempo: Script dim tempo e relacao com as duas datas em encomendas nos factos.

    5-Tabela de Factos: BDs (Encomendas e Linhas de Encomendas) onde fazemos o JOIN: Tabela de factos vendas com (idproduto, idcliente, idempregado, idtempo(Dataencomenda e DataEntrega), Preço de venda, Quantidade) 

     

    A construção da tabela de factos não implica um ligação directa com as dimensões. É assim que eu faço os meus DW.

    Neste caso não ha relacionamento fisico, pois não? apenas vai ser visto no cubo OLAP, com o cruzamento dos dados. 

    quinta-feira, 22 de dezembro de 2011 12:00

Respostas

  • Então deve fazer o seguinte:

    1 - A sua tabela fato no DW de produtos deverá ter um campo adicional chamado idClasse, enfatizando que no conceito BI, vc deve ter uma tabela dimensão chamada DIM_PRODUTOS com as descrições do produto e outra chamada FATO_PRODUTOS com  idProduto e preço unitário e demais valores.

    2 - Crie uma tabela dimensão normalizada chamada DIM_CLASSE. Os ID´s podem ser auto-incrementais.

    3 - Popule a tabela DIM_CLASE com todas as ocorrências de classes que vc possui em sua regra de negócio.

    4 - No processo de ETL para carga de dados no DW, vc deve ter uma task onde vc irá atualizar o campo idClasse da tabela FATO_PRODUTOS de acordo com os critérios de range de preços de cada produto. Pode utilizar um update simples.

    5 - Depois é só desenhar os cubos e dimensões no BIDS.

    Informações adicionais: msn: edugp_sp@hotmail.com

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    • Marcado como Resposta sql-enthusiast quinta-feira, 13 de setembro de 2012 09:48
    quinta-feira, 29 de dezembro de 2011 12:29
  • Por conceito de DW, vc deve colocar valores na tabela fato e os domínios (descrições, datas, etc) em dimensões.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    • Marcado como Resposta sql-enthusiast quinta-feira, 13 de setembro de 2012 09:48
    quinta-feira, 29 de dezembro de 2011 14:27
  • Eduardo,

    Concordo com você, vale ressaltar que a Tabela Fato deve apresentar informações relacionadas diretamente com a ocorrência do fato ao qual esta sendo registrada as informações.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Marcado como Resposta sql-enthusiast quinta-feira, 13 de setembro de 2012 09:49
    sábado, 31 de dezembro de 2011 22:23

Todas as Respostas

  • Amigo, não entendi a duvida.

    A forma como vc descreveu  o seu modelo DW para contração dos cubos OLAP está correto. É sempre bom ter em seu DW o relacionamento físico de todas as tabelas, mas isso não significa q vc vai será impedido de construir o seu datamart.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    segunda-feira, 26 de dezembro de 2011 15:00
  • O QUE É O RELACIONAMENTO FISICO?
    quarta-feira, 28 de dezembro de 2011 09:25
  • Relacionamento físico são os relacionamentos criados a partir de chaves estrangeiras. O relacionamento viabiliza toda a integridade de dados em sua tabelas relacionadas, fazendo com que os dados fiquem consistentes.

    Não entendi muito a sua duvida, pois da forma com que vc descreveu está correto, não esqueçendo é claro de fazer o relacionamento físico entre as tabelas.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    quarta-feira, 28 de dezembro de 2011 11:35
  • E como fazemos o relacinamento fisico entre as tabelas?

     

    Pode dar um exemplo no SSIS?

     

    eu normalmente crio a tabela de factos, com as BD operacionais de cabeçalhos e linhas. A chaves das dimensões ja se encontram lá. Assim sendo so crio mesmo a relação com a tabela de dimensão....

    quarta-feira, 28 de dezembro de 2011 14:39
  • Geralmente eu utilizo o database diagrams do SQL mesmo pra poder criar as chaves de relacionamento. Fica mais fácil, pois é bem visual e intuitivo. Em todos os banco do SQL existe uma "pasta" chamada "Database Diagrams". Lá vc pode criar um ou vários modelos relacionais ou vc pode criar via script, mas é mais complicado.

    Espero ter ajudado.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    quarta-feira, 28 de dezembro de 2011 14:53
  • consegue-me ajudar aqui?

     

    Basicamente o que pretendo mesmo fazer é criar vários atributos nas dimensoes (Produto) (ja criado em SQL mas vazio). Lá quero colocar, por exemplo, tendo em conta o preçoUnitario, um Atributo PreçoUnitarioProdutoClasse=[0-24], [25-32]...etc... Na tabela Operacional tenho PreçoProduto.

    Agora eu quero pegar no meu atributo da BD operacional e realizar uma condição do tipo: se o preço estiver entres X e Y então ClasseA : Se o preço estiver entre V e G então ClasseB, ....ClasseN. 

    Não sei como fazer nem como encaminha meu resultado para ao atributo da dimensão, caso utilize o DelivedColumn

    Como posso fazer isso?

    BDOPERACIONALPRODUTO

    - PVP (NUMERIC)

    DIMENSÂOPRODUTO

    - PVP (NUMERIC)

    - CLASSEPVP (Nvarchar)

     

    OLDB Source -> ......nao sei como fazer...


    quarta-feira, 28 de dezembro de 2011 18:04
  • Ola amigo, bom dia,

    Primeiramente deixa eu te explicar o que eu entendi para ver se os conceitos estão claros:

    Hoje vc tem uma tabela de produtos em seu banco de dados operacional que possui mais ou menos os seguintes atributos:

    - Codigo do produto, descrição do produto, Preço unitário, etc.

    Vc quer classificar os produtos por classe de acordo com suas faixas de preço unitário?

    Por exemplo:

    Produto1 = R$ 1,00, Produto2 = R$ 9,50, Produto 3 = R$ 56,00, Produto 4 = 8,50

    Se o critério da Classe A for os produtos cujo o preço unitário é de R$ 0,00 a 10,00, então vc quer "marcar" o Produto 1,2 e 4 como pertecente ao grupo Classe A?

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    quinta-feira, 29 de dezembro de 2011 11:45
  • Exactamente.

     

     

    quinta-feira, 29 de dezembro de 2011 12:12
  • Então deve fazer o seguinte:

    1 - A sua tabela fato no DW de produtos deverá ter um campo adicional chamado idClasse, enfatizando que no conceito BI, vc deve ter uma tabela dimensão chamada DIM_PRODUTOS com as descrições do produto e outra chamada FATO_PRODUTOS com  idProduto e preço unitário e demais valores.

    2 - Crie uma tabela dimensão normalizada chamada DIM_CLASSE. Os ID´s podem ser auto-incrementais.

    3 - Popule a tabela DIM_CLASE com todas as ocorrências de classes que vc possui em sua regra de negócio.

    4 - No processo de ETL para carga de dados no DW, vc deve ter uma task onde vc irá atualizar o campo idClasse da tabela FATO_PRODUTOS de acordo com os critérios de range de preços de cada produto. Pode utilizar um update simples.

    5 - Depois é só desenhar os cubos e dimensões no BIDS.

    Informações adicionais: msn: edugp_sp@hotmail.com

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    • Marcado como Resposta sql-enthusiast quinta-feira, 13 de setembro de 2012 09:48
    quinta-feira, 29 de dezembro de 2011 12:29
  • Eu estava a pensar em fazer uma copia da tabela de origem (Copy Column) e depois converter o atributo preço para varchar (Data Convert) e depois Fazer um Delivered Column e fazer uma comparação, para ver a queintervalo pertence, e atribui a classe nessa coluna. depois faço o mapping para atabela destino.
    quinta-feira, 29 de dezembro de 2011 14:16
  • ...
    quinta-feira, 29 de dezembro de 2011 14:17
  • Por conceito de DW, vc deve colocar valores na tabela fato e os domínios (descrições, datas, etc) em dimensões.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    • Marcado como Resposta sql-enthusiast quinta-feira, 13 de setembro de 2012 09:48
    quinta-feira, 29 de dezembro de 2011 14:27
  • Eduardo,

    Concordo com você, vale ressaltar que a Tabela Fato deve apresentar informações relacionadas diretamente com a ocorrência do fato ao qual esta sendo registrada as informações.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Marcado como Resposta sql-enthusiast quinta-feira, 13 de setembro de 2012 09:49
    sábado, 31 de dezembro de 2011 22:23