11 Replies Latest reply: Apr 9, 2015 7:30 PM by Ricardo Azevedo RSS

    Várias consultas SQL em um único Dashboard

    Ricardo Azevedo

      Prezados, sou apenas um contador atuante na área de finanças e curioso na área de BI.

       

      Trabalho com banco de dados Oracle e sistema Protheus (TOTVS). Me aventuro em montar algumas consultas em SQL no PL/SQL e depois de prontas faço uma query no Excel montando algumas dinâmicas que dão origem aos meus dashboards.

       

      Recentemente descobri o Qlikview então já peço desculpas se disser alguma besteira aqui.

       

      Minhas consultas SQL funcionam perfeitamente no Qlikview porém no momento minha dificuldade é a seguinte:

      Possuo alguns dashboards que necessitam de dados que estão em tabelas totalmente distintas sem nenhuma relação. Como poço utilizar em apenas um projeto vários select ?

       

      Exemplo:

       

      Dashbard A - (Gráfico 1)

       

      SELECT * FROM P11PRD.CT2010

      WHERE CT2.D_E_L_E_T_<>'*'

       

      Dashbard A - (Gráfico 2)

       

      SELECT * FROM P11PRD.SE5010

      WHERE SE5.D_E_L_E_T_<>'*'

       

      As select, individualmente no Qlikview funcionam perfeitamente mas não consigo fazer as duas.

       

      Procurei este assunto no forum mas não encontrei.

       

      Uso a versão Qlikview 11 Personal (aquela grátis)

       

      Agradeço desde já pela ajuda.

        • Re: Várias consultas SQL em um único Dashboard
          Clever Anjos

          Ricardo, sim é plenamente possível e comum.

          Mas antes você precisa preparar um pouco seus dados. O QlikView por natureza irá fazer ligações entre as tabelas baseado nos nomes dos campos.

          Se duas (ou mais) tabelas compartilham colunas com os mesmos nomes o QV irá entender que são a mesma informação e irá fazer uma ligação entre elas. Isso pode ser desejável ou não, depende do seu caso.

           

          Caso você não precise relacionar informações das suas tabelas, coloque o comando QUALIFY * antes do primeiro LOAD, neste caso o QV não irá fazer a ligação, pois cria nomes distintos para as colunas

          • Re: Várias consultas SQL em um único Dashboard
            Maicon Mello

            Olá Ricardo , quero ver se entendi,

            Você quer montar um Dash board, ou seja uma tela mostrando os dados de 2 tabelas, correto ?

             

            Você quer utilizar algum filtro em comum ?

             

            Exemplo, datas ...

             

            O que quero entender melhor, você tem duas tabelas distintas , certo ? Mas possui dados que uma depende da outra ?

            Pode passar um exemplo para melhor entender ?

             

            Mas é possivel fazer !

             

            Se eu entendi, você vai ter 2 gráficos, onde cada um terá estrutura assim :

             

            Grafico 1 Dimensão da CT2 e expressões de campos da ct2

            Grafico 2 Dimensão da SE5 e Expressões de Campo da SE5

             

             

             

            Atenciosamente,

            Maicon Mello

            • Re: Várias consultas SQL em um único Dashboard
              Maicon Mello

              Então ricardoazevedo, pode utilizar Qualify realmente para não fazer nenhum vinculo entre as tabelas.

               

              Pode acontecer de as tabelas tenha campos iguais.

               

              Qualify*;

              Load * from tabela CT2;

              Load * from Tabela SE5;

               

              Qualify, vai qualificar todos os campos.

               

              Exemplo ct2.campo1,ct2.campo2 etc. Com as duas tabelas.

               

              Depois só montar o gráfico com seus respectivos campos.

               

              Atenciosamente,

               

              Maicon Mello

                • Re: Várias consultas SQL em um único Dashboard
                  Maicon Mello

                  ODBC CONNECT32 TO [Protheus*****

                   

                  qualify *;

                  SE5: //Nome que quiser dar a tabela

                  Load Campo1

                          Campo2;

                  SELECT SE5010.E5_DATA

                  FROM P11PRD.SE5010

                   

                  CT2: //Nome que quiser 

                  Load Campo1,Campo2 ;

                  SELECT CT2010.CT2_DEBITO

                  FROM P11PRD.CT2010

                   

                  Caso queira carregar alguns campos, coloque o nome dos campos que quer carregar, caso contrario, utilize *.

                  Lembrando que no Load , os campos tem que ser exatamente igual no banco, CASESENSITVE.

                   

                  Att,

                  Maicon Mello

                    • Re: Várias consultas SQL em um único Dashboard
                      Ricardo Azevedo

                      maiconmello muito obrigado. Deu certo.

                      Ficou assim

                       

                      qualify *;

                      SE5010: //Financeiro

                      Load    E5_DATA,

                                 E5_FILIAL;

                       

                      SELECT    SE5010.E5_DATA

                                     , SE5010.E5_FILIAL

                       

                      FROM P11PRD.SE5010;

                       

                      CT2010: //Contábil

                      Load  CT2_DEBITO,

                               CT2_FILIAL ;

                      SELECT

                                    CT2010.CT2_DEBITO

                                  , CT2010.CT2_FILIAL

                      FROM P11PRD.CT2010

                       

                      Fiquei com uma dúvida. Neste caso específico, todos os campo que eu colocar abaixo do SELECT devo também colocar abaixo do Load ?

                       

                      Outra dúvida que tenho é posso colocar cada selec em uma aba do editor de Script ? Como seria ?

                        • Re: Várias consultas SQL em um único Dashboard
                          Maicon Mello

                          Ricardo,

                           

                          Seguinte, você pode fazer o Select * from e no load carregar os campos que vai utilizar. Porém uma tabela muito grande pode dar problema de performance.

                           

                          Geralmente ,quando trabalhamos (No caso eu) nas empresas , trabalho com Extrator e Aplicação.

                           

                          Extrator - Faz toda a parte de select e gera o QVD, aplicação faz a leitura de QVD e apresenta os dados ao usuário.

                          Eu sempre procuro usar os campos somente os que vou utilizar. Tanto no load quanto no Select.

                           

                          Pode colocar cada select em cada aba. Ele executa na sequencia de cima pra baixo da esquerda para direita, ou seja sempre a sequencia em que as abas estão. 

                           

                          Atenciosamente;

                          Maicon Mello

                    • Re: Várias consultas SQL em um único Dashboard
                      Pablo Labbe

                      Pessoal,

                       

                         Gostaria de colocar meu ponto de vista sobre esta questão e acredito que é valido para o desenvolvimento de toda aplicação Qlikview : Planejamento.

                       

                      Planejar é a primeira etapa dentro de uma metodologia de desenvolvimento de aplicações Qlikview. Ao planejar você determina:

                        - indicadores você quer analisar no seu dashboard e as regras de cálculo

                        - definir com eles serão visualizados (tabelas, graficos, relogios)

                        - Que campos você vai considerar como dimensão nos gráficos e critérios de filtro

                      entre outros quesitos que vão orientar o seu desenvolvimento

                       

                        Isso vai te ajudar a definir um modelo de dados que vai permitir a exploração de dados por diferentes perspectivas e de forma integrada.

                       

                        Você vai filtrar ano e mês, e os 2 indicadores, que vem de tabelas diferentes, estarão sincronizados. Depois você filtra por produto, por cliente, por  centro de custo e estes 2 indicadores vão refletir os filtros aplicados.

                       

                        Colar consultas SQL em um script e trazer isso para dentro do Qlikview é importante num momento inicial do planejamento onde estamos explorando a base de dados para entender os dados existentes, senão você vai criar uma um Frankenstein que terá vida curta ! 

                       

                        Qlikview não é somente uma ferramenta de visualização de querys !

                       

                      Pensem nisso !

                       

                      Abraço,

                       

                      Pablo Labbe Ibaceta

                      ANALITIKA Inteligencia

                      Qlik Partner - Implementation

                        • Re: Várias consultas SQL em um único Dashboard
                          Ricardo Azevedo

                          pablolabbe agradeço seus conselhos que colocarei em prática e tenho certeza que serão de grande valia pra mim.

                           

                          No caso dessas querys que me refiro eu já as montei no PL/SQL e testei no Excel já validando os dados.

                          Neste caso específico estou montando querys com tabelas que realmente não se relacionam nem em datas.

                          Para as demais penso em relacionar pelo menos as datas para ter comparações em períodos idênticos.

                           

                          Novamente agradeço as dicas.

                           

                          Abraço