3 Replies Latest reply: Mar 19, 2015 9:00 AM by Yuri Nicolett RSS

    Base de dados histórico, como resolver?

    Edson Lana

      Boa tarde,

       

      Por favor podem me ajudar em uma questão técnica:

       

       

      Minha nuvem de dados advém de um banco de dados, ou seja, tenho alguns 'Selects' entre as tabelas que acabam criando chaves.

      Preciso adicionar a essa nuvem de dados informações do tipo histórico (Excel) porém tenho chaves sintéticas ao fazer isso, pois alem das chaves da base histórico que são criadas para os 'Selects', tenho chaves entre os 'Selects'.

       

      Chave sintética: Mais de uma campo em uma tabela que se relacionam com mais de uma tabela, o conceito é esse?

       

      Pensei em criar uma chave com todos os campos da base de histórico, e dentro de cada 'Select' criar essa chave, e para os campos que não atenderem o select colocaria na chave o valor de -1.

       

      Qual seria a melhor estrategia?

       

      Obrigado

       

      yuri.nicolett pode me ajudar?

        • Re: Base de dados histórico, como resolver?
          Alessandro Furtado

          Boa noite.  Vou tentar te esclarecer.....

           

          Chave sintetica seriam campos iguais em duas ou mais tabelas aonde o Qlik cria uma tabela no meio delas com as ligacoes......

           

          Vejamos o exemplo abaixo:

           

           

           

          Tabela_A:

          LOAD * INLINE [

              Campo1, Campo2,Campo3

              A    , B    ,C

              A    , C    ,D

              A    , D    ,E

          ];

           

           

          Tabela_B:

          LOAD * INLINE [

              Campo1, Campo2,Campo4

              A    , B    ,1

              A    , C    ,2

              A    , D    ,3

          ];

           

           

          Este script vai criar no modelo uma chave sintetica....

          2015-03-11 20_24_45-C__OneDrive_Documentos_Chave sintetica.qvw.png

           

          que seria

           

          2015-03-11 20_25_05-C__OneDrive_Documentos_Chave sintetica.qvw.png

           

          Então, para evitar isto existem algumas formas

          - Criar chave unindo campos

          - Renomear campo

          - unir as tabelas (ex: left join   ou concatenate)

          - linked table

           

          Exemplo

           

          Tabela_A:

          LOAD

               Campo1 & Campo2  as NovoCampo,

               Campo1,

               Campo2,

               Campo3;

          LOAD * INLINE [

              Campo1, Campo2,Campo3

              A     , B     ,C

              A     , C     ,D

              A     , D     ,E

          ];

           

           

          Tabela_B:

          LOAD

               Campo1 & Campo2  as NovoCampo,

               Campo4;

          LOAD * INLINE [

              Campo1, Campo2,Campo4

              A     , B     ,1

              A     , C     ,2

              A     , D     ,3

          ];

           

          2015-03-11 20_30_40-C__OneDrive_Documentos_Chave sintetica.qvw.png

           

          Segue um material com melhores explicacoes.....especialmente paginas 12 a 21...

           

          AMF

          • Re: Base de dados histórico, como resolver?
            Yuri Nicolett

            A resposta do Alessandro esta muito boa. Pode seguir que é o caminho correto.

             

            Apenas um complemento: É sempre bom evitar o uso de chave sintética, pois você perde o controle da quantidade de registros que serão criados nesta tabela (essa ação é definida pelo próprio Qv e geralmente ele faz um produto cartesiano entre todos os campos da chave entre as duas tabelas).

            Chave sintética não quer dizer que é um problema, mas pode se tornar. Por esta razão sempre evite.

            • Re: Base de dados histórico, como resolver?
              Yuri Nicolett

              Twister8, caso o problema tenha sido resolvido, feche o tópico