Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Várias consultas SQL em um único Dashboard

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.‌

Labels (2)
1 Solution

Accepted Solutions
maiconmello
Creator III
Creator III

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

View solution in original post

11 Replies
Clever_Anjos
Employee
Employee

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

maiconmello
Creator III
Creator III

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

Anonymous
Not applicable
Author

Olá MaiconMello . Muito obrigado por responder.

É exatamente como você entendeu.

No gráfico 1 vou usar somente dados da CT2 e no gráfico 2 usarei apenas dados da SE5.

Abraços...

maiconmello
Creator III
Creator III

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

Anonymous
Not applicable
Author

Prezado cleveranjos‌ muito obrigado pela sua resposta.

Desculpe minha ignorância. Onde devo colocar o comando QUALIFY* ?

ODBC CONNECT32 TO [Protheus*****

SELECT SE5010.E5_DATA

FROM P11PRD.SE5010

SELECT CT2010.CT2_DEBITO

FROM P11PRD.CT2010

Abraço

maiconmello
Creator III
Creator III

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

pablolabbe
Luminary Alumni
Luminary Alumni

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

Anonymous
Not applicable
Author

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

Anonymous
Not applicable
Author

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 ?