Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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!
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.
Rogério, boa tarde!
Muito obrigado pela resposta, já havia tentando esta estratégia, porém gerou muitas tabelas sintéticas, veja como ficou:
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
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.
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:
Muito obrigado pela força! Com o seu exemplo poderei replicar o conceito em todas as minhas aplicações. Obrigado!
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.
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
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.
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!
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.