none
PROBLEMA COM TABELA FATO RRS feed

  • Pergunta

  • BOA NOITE ESTOU FAZENDO UM TRABALHO DE BI E ESTOU COM PROBLEMAS COM A TABELA FATO, SEI QUE A TABELA FATO TEM QUE POSSUIR AS CHAVES ESTRANGEIRAS DAS DIMENSÕES, MAS O PROBLEMA É COMO FAZER ISSO, 

    EXEMPLO NO MEU TRABALHO POSSUI 5 DIMENSOES, COM 100 REGISTROS E A CHAVE PRIMARIA É SEQUENCIAL DE 1 A 100, E NÃO ESTOU CONSEGUINDO POPULAR A TABELA FATO, POR SCRIPT SQL, 

    A DUVIDA É COM 5 DIMENSOES DE 100 LINHAS, QUANTAS LINHAS VAI TER NA TABELA FATO?

    AS TABELAS PRO PROJETO SÃO PACIENTE, EXAMES, MEDICAMENTOS, TESTE01, TESTE02

    REALIZEI ESSE SCRIPT PARA POPULAR A TABELA FATO E DEU MILHOES DE REGISTRO, SERA QUE TA CERTO?

    INSERT INTO FATO

    SELECT     dbo.Exames.IDExames, dbo.Paciente.IDPaciente, dbo.Medicamento.IDMedicamento, dbo.Teste02.IDTeste02, 

                          dbo.Teste01.IDTeste01
    FROM         dbo.Exames CROSS JOIN
                          dbo.Paciente CROSS JOIN
                          dbo.Medicamento CROSS JOIN
                          dbo.Teste02CROSS JOIN
                          dbo.Teste01

    GRATO

    domingo, 4 de março de 2012 00:25

Todas as Respostas

  • Fala meu caro, bom dia.

    Bom, primeiro eu te aconselharia a utilizar um tipo de chave chamado Surrogate Key nas tabelas de Dimensões e não as próprias chaves das tabelas do OLTP.

    Recomendo esta utilização, pois acredito que você está utilizando este banco de dados com a idéia que o mesmo, além de ser multi-dimensional, seja também de hístórico.

    Também não recomendo você a fazer este tipo de insert, utilizando no select um Cross Join, pois para este caso, você fará um produto cartesiano, relacionando cada registro de um tabela com cada registro de outra tabela, sendo o resultando, um número total multiplicado entre as tabelas relacionadas.

    Mas o que vai depender para você fazer este tipo de carga?

    Bom, vai depender de como está a visão do negócio e do que precisa de informação. Com isso, você pode utilizar tanto INNER JOIN, LEFT JOIN e RIGHT JOIN.

    Contudo, seria interessante você pensar em fazer este tipo de carga utilizando uma ferramenta ETL, como por exemplo o Microsoft Integration Services. Tanto para aprendizado quanto para facilitar o processo de carga, a utilização desta ferramenta seria mais "adequada" a necessidade.

    Estamos por aqui para maiores esclarecimentos.


    Cristiano Joaquim

    segunda-feira, 5 de março de 2012 14:59
  • CRISTIANO VALEU PELA AJUDA, MAS ESTOU PRECISANDO DE MUITA AJUDA,KKKKKKKK

    O SEGUINTE MEU PROJETO DE CURSO É BEM COMPLICADO E NA AULA NÃO TEMOS QUASE NADA DE BUSINESS INTELLIGENTE, O BI EM QUESTAO É HISTORICO SIM, POREM TEM POUCOS REGISTROS, QUE SAO BEM VALIOSOS, JA IMPORTEI TUDO UTILIZANDO O INTEGRATION SERVICES, DEU UM POUCO DE TRABALHO SIM, MAS AS TABELAS DIMENSOES ESTÃO OK PELO MENOS ACHO ISSO, ESTOU PATINANDO NA TABELA FATO EX,

    PRECISO RELACIONAR AS TABELAS PACIENTE, EXAMES, MEDICAMENTO, ETC, SEI QUE PARA FAZER ISSO A CHAVE PRIMARIA DAS DIMENSOES SERAO CHAVES ESTRANGEIRAS DA TABELA FATO.

    NA TABELA FATO, VOU TER ALGUNS ATRIBUTOS, QUE ESTA SENDO DECIDIDO AINDA, MAS ACHO Q IMC É CERTO, POR SER CAMPO CALCULADO, MINHA DUVIDA É POPULAR A TABELA FATO, 

    EXEMPLO CRIAR O COMANDO SQL ONDE A CHAVE PRIMARIA DA TABELA DIMENSAO VIRA CHAVE ESTRANGEIRA E POPULALA COM OS VALORES DO IMC, POR EXEMPLO

    ACHO QUE VAI FICAR MAIS OU MENOS ASSIM

    PAC_ID =1

    MED_ID= 2

    EXAME_ ID = 4

    IMC = 24,5

    ESSA É MINHA DUVIDA POPULAR ESSA TABELA COM VALORES CORRETOS NO EXEMPLO Q PASSEI ACIMA DEU EM MEDIA MILHOES DE LINHAS PARA POUCOS REGISTROS.

    GRATO ROGERIO

    segunda-feira, 5 de março de 2012 15:15
  • Fala Rogério, beleza?

    Não sei se vou "chover no molhado", mas...

    Bom, se você já tem o Banco OLAP modelado e já está fazendo a carga com o Integration Services, deverá utilizar o mesmo processo para preencher a Fato, pois a única coisa que irá mudar será a utilização de um Select com as funções para calcular/agregar o que deseja ser medido. Acredito que um INNER JOIN (sim, ele mesmo) já ajude você nesta questão, pois somente será medido o que estiver com informações completas e prontas para serem apresentadas.

    Digo isso pelo fato de que para gerar o Cubo, suas dimensões e fatos já estarão carregadas e você, simplesmente irá criar os membros cálculados/agregações.

    Contudo, só uma dica. Garanta que realmente suas Dimensões estejam carregadas, pois no momento que você for carregar a fato, somente utilizará um SELECT com INNER JOIN com funções como MAX, MIN, COUNT, SUM, AVG e por ai vai.

    Vamos nos falando meu caro.

    Atenciosamente,


    Cristiano Joaquim

    segunda-feira, 5 de março de 2012 17:30