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: 
rafael_limeira
Contributor III
Contributor III

Dúvida Evolução por Período (QVD)

Pessoal, boa tarde!

Gostaria de verificar uma situação com vocês, para administrar meu projetos da melhor forma possível ! Tenho uma aplicação onde vou gravando um histórico em QVDs. Minha intenção é pegar este histórico e criar análises evolutivas. Conforme imagem abaixo, para organização estou colocando YY/MM + nome da tabela. Para fazer isso, subi uma variável no script.

Capturar.PNG

Pensei em colocar esta variável em cada tabela ao gerar os QVDs, porém, geraria tabelas sintéticas. O que vocês recomendam? Daria para pegar a referência do período pelo nome dos históricos e criar um campo? Creio que já tenham passado por esta situação, rsrs

Fico agradecido, abraço!

10 Replies
rogerioqv
Creator II
Creator II

Rafael,

Eu já utilizei o que você está fazendo. Pode ser simples, basta você criar em cada tabela um campo que determina o período, exemplo: COMPETENCIA, onde você guardaria a competência do dado extraido (1510, 1509).

Ao fazer o load, basta colocar um único load onde você busca todos os arquivos que terminem com alguma expressão, exemplo load ... from *statusTerminal.qvd (qvd); Neste ponto, o qlikview fará a leitura de todos os arquivos com a nomenclatura escolhida e uma única vez.

Atente para não utilizar neste ponto qualify, pode ser que haja problemas no relacionamento.

Não esqueça de utilizar o ano também como referência, é importante na análise das informações.

Abraços.

rafael_limeira
Contributor III
Contributor III
Author

Rogério, boa tarde!

Muito obrigado pela resposta, já havia tentando esta estratégia, porém gerou muitas tabelas sintéticas, veja como ficou:

Sem título.png

Com isso, a aplicação saltou de 1.2Mb para 499Mb (muito lenta). Não sei se foi isso que quis dizer

Abraço!

Rafael

rogerioqv
Creator II
Creator II

Rafael,

As chaves sintéticas são porque você tem o nome dos campos idênticos em tabelas diferentes... no seu caso, tem que alterar o modelo de dados. Ou você carrega tudo como uma tabela única, tabelão, ou cria chaves entre as tabelas. Lembre-se que o conceito do QV é multidimensional, ou seja, o que as Syn Tables estão fazendo é isto mesmo, relacionar tudo com tudo.

No seu caso eu criaria chaves independentes para cada tabela, relacionando elas com chaves distintas, para que não haja a Syn Table, ou então, criar uma tabela única utilizando join para isto.

Qualquer dúvida estou por aqui.

rafael_limeira
Contributor III
Contributor III
Author

Rogério,

Acredito que a melhor alternativa seria a criação de chaves, já que as tabelas possuem informações diferenciadas entre elas (quantidade de colunas). Porém, mesmo utilizando uma chave caí no mesmo problema. Você poderia me dar um exemplo prático de como ficaria a estrutura seguindo sua sugestão de chaves (creio que não fiz do jeito que você estava ensinando). O modelo abaixo é o original:

export.png

Muito obrigado pela força! Com o seu exemplo poderei replicar o conceito em todas as minhas aplicações. Obrigado!

rogerioqv
Creator II
Creator II

Rafael,

Vai depender muito do objetivo da aplicação, mas tente fazer algo assim:

Tabela: STATUSTERMINAL

Chave: numeroSerie as PK_STATUSTERMINAL

Tabela: TABELATERMINAIS

Chaves: numeroSerie as PK_STATUSTERMINAL,

             numeroSerie as PK_FATURASERVICOS,

             numeroSerie as PK_ANALISEREFERENCIA,

             clienteID

Tabela: FATURA DE SERVICOS

            numeroSerie as PK_FATURASERVICOS

Tabela: ANALISEREFERENCIA

            numeroSerie as PK_ANALISEREFERENCIA

Veja se o modelo é ideal para você, pois depende muito do volume de dados, tipos de dimensões, estas coisas... seria interessante utilizar o qualify e o unqualify, para que outros campos que tenham o mesmo nome não sejam automaticamente relacionados.

Na Aba Main, use a seguinte instrução antes de começar a ler as tabelas:

QUALIFY *;

UNQUALIFY

           PK_STATUSTERMINAL,

           PK_FATURASERVICOS,

           PK_ANALISEREFERENCIA,

           clienteID;

Com esta instrução, você está qualificando as tabelas, ou seja, colocando antes do nome do campo o nome da tabela (ex: TABELA.NOMECAMPO). Assim, você está evitando que os campos de nomes iguais possam ser relacionados automaticamente pelo QV. Com o UNQUALIFY, você está mostrando ao QV quais campos você quer que ele relacione, ou melhor, é você quem determina o que será relacionado.

Pode não ser o melhor modelo, mas vai te ajudar a não criar mais Syn Tables e a utilizar o conceito de que é você quem determina a sua modelagem de dados.

Qualquer dúvida estou a disposição.

rafael_limeira
Contributor III
Contributor III
Author

Rogério, bom dia!

Muito legal sua ideia!! O problema quanto ao meu modelo é que ao armazenar as tabelas, criei um campo chamado "competência" em todas elas, resultando chaves sintética, mesmo colocando chaves primárias conforme seu modelo. Se eu utilizar o qualify para a competência acabo perdendo o vínculo de período entre elas, gerando informações equivocadas na aplicação.

Abraço!

Rafael

rogerioqv
Creator II
Creator II

Rafael,

Verifique a necessidade de se colocar o campo competência em todas as tabelas. Neste caso, se este campo tiver as mesmas informações em todas as tabelas, talvez seja necessário criar uma tabela "calendário" ou algo do tipo.

Mas se puder me dar um "briefing" do seu projeto talvez possa lhe ajudar em criar um melhor modelo de dados.

abraços.

rafael_limeira
Contributor III
Contributor III
Author

Rogério,

Em todas as tabelas o campo competência terá a mesma informação, armazenando o mês de fechamento, assim, eu conseguiria realizar evoluções por período. A ideia do projeto é bem simples, adicionando indicadores conforme informações das tabelas, porém, estou com dificuldades para a criação de históricos por período de fechamento.

Agradeço pela força! 

rogerioqv
Creator II
Creator II

Rafael,

Você conseguiria me disponibilizar estes arquivos qvd's constantes de seu primeiro exemplo. Eu poderia fazer uns testes com eles para poder criar uma melhor modelagem para você. Se quiser enviar para meu e-mail, mande para rogerio.ferreira@qlikdev.com.br.

Abraços.