15 Replies Latest reply: Jul 7, 2015 9:47 AM by Welinton Gonçalves RSS

    Organizar Tabelas e Link Tables

    Welinton Gonçalves

      Boa noite,

       

      Alguém ai com criatividade e conhecimento de tabelas links para organizar este grupo de tabelas?

      Tentei criar algumas link tables mas já estava chegando na KEY6 já ai desisti de fazer uma "bagunça organizada" nas tabelas.

      Segue as tabelas:

      Capturar.PNG

      Obrigado pelo apoio!

        • Re: Organizar Tabelas e Link Tables
          Pablo Labbe

          Welinton,

           

            Teu modelo de dados parece um modelo de teste para uma certificação de modelagem de dados.

           

            Eu particularmente levaria ao menos um turno para reorganizar isso como consultoria de QA.

           

            O que posso te sugerir pra você ir resolvendo sozinho é fazer a concatenação das chaves compostas a fim de criar chaves únicas entre as tabelas. Isso já ajudaria a eliminar grande parte das chaves sintéticas. Depois com o que sobrar você avalia a necessidade de criar uma link table ou não.

           

          Abraço,

           

          Pablo

            • Re: Organizar Tabelas e Link Tables
              Welinton Gonçalves

              hahaha vou tomar essa tua primeira linha como um super elogio! então se eu me virar com essa quantidade de dados sou "certificado" a me aventurar pelo mundo Qlik? rs .. brincadeira .. sou bem iniciante e estou aproveitando para escrever alguns modelos em excel que uso na empresa em qlikview (acredite, tudo isso ai tem em uma planilha de 34 MB em formato xls, mas lá tem mais indicadores do que ai hahaha).

               

              Sobre reduzir o número de chaves duplicadas, eu cheguei a fazer 2 link tables completas, mas ai começou a dar referência circular, tentei contornar e acabei me perdendo no meio de tudo e resolvi começar novamente.

              Valeu Pablo!

            • Re: Organizar Tabelas e Link Tables
              Arthur Molino

              Vixe Maninho... Vamos comecar pelo básico! CR, CR GRUPO E REGIONAL possuem cr_codigo e regional_codigo em comum, sendo assim (e por parecer ser uma dimensão) você poderia fazer:

               

              Regional:

              LOAD

              cr_codigo

              , regional_codigo

              , regional_descricao

              , regional_gerente

              , regional_comercial

              , regional_superintendente

              FROM <SUA FONTE DE DADOS DE REGIONAL!!!> ;

              LEFT JOIN(Regional)

              LOAD

              cr_codigo

              ,regional_codigo

              , cr_grupo_sisplan

              FROM <SUA FONTE DE DADOS DE CR!!!> ;

              LEFT JOIN(Regional)

              LOAD

              cr_codigo

              , regional_codigo

              , cr_descricao

              FROM <SUA FONTE DE DADOS DE CR GRUPO!!!> ;

               

              //Depois disso vamos encarar o DRE REALIZADO E O ORCADO, vou fazer aqui pela destra

              //(join) mas existem outras maneiras (concatenate)

               

              DRE_temp:

              LOAD

              cr_codigo

              ,un_codigo

              ,conta_codigo

              ,periodo

              ,dre_real_valor

              FROM <SUA FONTE DE DADOS DE DRE REALIZADO!!!> ;

              JOIN( DRE_temp)

              LOAD

              cr_codigo

              ,un_codigo

              ,conta_codigo

              ,periodo

              ,dre_orc_valor

              FROM <SUA FONTE DE DADOS DE DRE ORCADO!!!> ;

               

              // Para poder linkar com Vendas uma chave que contenha Periodo e regional precisa ser criada,

              //então farei um left join para criar os campos para a chave e um LOAD RESIDENT para criar a tabela

              // com a chave correta

               

              LEFT JOIN (DRE_temp)

              LOAD

              cr_codigo

              ,regional_codigo

              RESIDENT Regional;

               

              NOCONCATENATE

              DRE:

              LOAD *, periodo&'|'&regional_codigo as Venda_ID RESIDENT DRE_temp;

              DROP TABLE DRE_temp;

               

              // Agora farei o Load das vendas

              Vendas:

              LOAD

              periodo&'|'&regional_codigo as Venda_ID

              ,vendas_qtd_recargas

              ,vendas_preco_face

              ,vendas_comissao_pdv

              FROM <SUA FONTE DE DADOS DE  VENDAS!!!> ;


              //Veja que Venda_ID é a primeira chave que criei, agora vou carregar nesta ordem capilariedade,valor face, margem pdv orcamento:

               

              Capilariedade:

              LOAD

              periodo&'|'&regional_codigo as Venda_ID

              ,periodo&'|'&segmento_grupo as Segmento_ID

              ,segmento_grupo

              ,capilariedade_orc_valor

              FROM <SUA FONTE DE DADOS DE  CAPILARIEDADE!!!> ;

               

               

              VendaFace:

              LOAD

              periodo&'|'&operadora_grupo as Operadora_ID

              ,periodo&'|'&segmento_grupo as Segmento_ID

              ,regional_grupo

              ,venda_face_orc_valor

              FROM <SUA FONTE DE DADOS DE  VENDA FACE!!!> ;

               

               

              MargemPDV:

              LOAD

              periodo&'|'&operadora_grupo as Operadora_ID,

              margem_pdv_valor

              FROM <SUA FONTE DE DADOS DE  MARGEM PDV!!!> ;

               

              // Ai pode carregar a ultima tabela

               

               

              ContasDRE:

              LOAD conta_codigo

              ,conta_descricao

              ,conta_grupo

              ,conta_linha_dre

              FROM <SUA FONTE DE DADOS DE  CONTAS DRE!!!> ;

               

              //*OBSERVACOES:

              //1-------------------------------------------------------------------------------------------------------------------------------------------------------

              //Considerei que todas as tabelas tem correspondencias de 100% ( os campos chaves existem e sempre encontram

              //pelo menos um valor nas duas tabelas em que existe a chave

              //2-------------------------------------------------------------------------------------------------------------------------------------------------------

              // Se o resultado não satisfazer as necessidades, por favor, procure criar mais dimensões e tabelas que estejam

              //vinculadas com uma chave razoavel.

                • Re: Organizar Tabelas e Link Tables
                  Welinton Gonçalves

                  kkk vish Deus! acho que graças a você vou aprender join, porque parece ser a solução do problema!

                  Isso ai é quase um curso de modelagem de dados kk vou precisar de um tempo para ler e testar essa joça ai kkk.

                   

                  Muito obrigado mesmo Arthur, deixa testar esse monstrinho e já te conto o que houve!

                  • Re: Organizar Tabelas e Link Tables
                    Welinton Gonçalves

                    Arthur!

                    ficou assim agora:

                    Capturar.PNG

                    e o script ficou o seguinte:

                    Regional:

                    LOAD

                    cr_codigo

                    ,regional_codigo

                    ,regional_descricao

                    ,regional_gerente

                    ,regional_comercial

                    ,regional_superintendente

                    FROM [..\03-QVD\REGIONAL.QVD](qvd);

                     

                    Left Join (Regional)

                    LOAD

                    cr_codigo

                    ,cr_descricao

                    FROM [..\03-QVD\CR.QVD] (qvd);

                     

                    Left join(Regional)

                    LOAD

                    cr_codigo

                    ,cr_grupo_sisplan

                    FROM [..\03-QVD\CR GRUPO.QVD] (qvd);

                     

                    DRE_temp:

                    LOAD

                    cr_codigo

                    ,un_codigo

                    ,conta_codigo

                    ,periodo

                    ,dre_real_valor

                    FROM [..\03-QVD\DRE REALIZADO.QVD] (qvd);

                     

                    Join(DRE_temp)

                    LOAD

                    cr_codigo

                    ,un_codigo

                    ,conta_codigo

                    ,periodo

                    ,dre_orc_valor

                    FROM [..\03-QVD\DRE ORCAMENTO.QVD] (qvd);

                     

                    Left Join(DRE_temp)

                    LOAD

                    cr_codigo

                    ,regional_codigo

                    Resident Regional;

                     

                    NoConcatenate

                    DRE:

                    LOAD *, periodo&'|'&regional_codigo as Venda_ID Resident DRE_temp;

                    DROP Table DRE_temp;

                     

                    Vendas:

                    LOAD

                    periodo&'|'&regional_codigo as Venda_ID

                    ,vendas_qtd_recargas

                    ,vendas_preco_face

                    ,vendas_comissao_pdv

                    FROM [..\03-QVD\VENDAS.QVD] (qvd);

                     

                    Capilaridade:

                    LOAD

                    Mês&'|'&[Regional Código] as Venda_ID

                    ,Mês&'|'&[Segmento Grupo] as Segmento_ID

                    ,[Segmento Grupo] as segmento_grupo

                    ,[Orc Capilaridade] as capilaridade_orc_valor

                    FROM [..\03-QVD\ORCAMENTO CAPILARIDADE.QVD] (qvd);

                     

                    VendaFace:

                    LOAD

                    Mês&'|'&[Regional Código] as Venda_ID

                    ,Mês&'|'&[Segmento Grupo] as Segmento_ID

                    ,[Segmento Grupo] as segmento_grupo

                    ,[Orc Valor Face] as face_orc_valor

                    FROM [..\03-QVD\ORCAMENTO FACE.QVD] (qvd);

                     

                    MargemPDV:

                    LOAD

                    Mês&'|'&[Operadora Grupo] as Operadora_ID

                    ,[Orc Margem PDV] as margem_pdv_valor

                    FROM [..\03-QVD\ORCAMENTO MPDV.QVD] (qvd);

                     

                    ContasDRE:

                    LOAD

                    conta_codigo

                    ,conta_descricao

                    ,conta_grupo

                    ,conta_linha_dre

                    FROM [..\03-QVD\CONTAS DRE.QVD] (qvd);

                     

                    Preciso agora só vincular aquelas tabelas isoladas, o que acha do resultado?

                     

                    Abs

                  • Re: Organizar Tabelas e Link Tables
                    Arthur Molino

                    Ficou um pouco melhor, mas evite a criacao de chaves sinteticas. Se o campo é carregado em uma tabela, faca com que tenha apenas um campo para ligar com outras tabelas.

                    • Re: Organizar Tabelas e Link Tables
                      Yuri Nicolett

                      Welinton, segue um material bem lega sobre modelagem de dados.

                      Vale a pena dar uma lida

                      • Re: Organizar Tabelas e Link Tables
                        Welinton Gonçalves

                        Obrigado pessoal, aprendi muito com tudo que fizeram aqui entre dicas e materiais, certamente quando o modelo estiver finalizado posto os resultados até para ajudar os demais!

                         

                        Abs.