Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Demora em calculo trasnformador

Ola Galera boa tarde,

   Sei que é carnaval mais eu estou direto aqui e com este problema, seguinte, eu trabalho com o conceito de BI tradicional onde eu tenho um Extrator (select * no banco), transformador (onde faço os calculos e transformações necessarias) e por fim a visão que tem apenas o load das tabelas, muito bem, eu necessito fazer alguns calculos de juros e etc na fato e se tirando esses calculos o transformador roda em no maximo 5 minutos, porém com esses calculos esta levando mais de 1 hora, alguem poderia ajudar nesta questão ? seria melhor fazer esses calculos na visão então  pra ser mais rapido ?

eu estou mandando o transformador em anexo tamanho o desespero, pois o projeto tem de entrar em producao na sexta feira. kkkkkkkkk

Labels (2)
16 Replies
Anonymous
Not applicable
Author

Alessandro realmente tinha esse erro, corrigi e ja fiz as alterações, porém mesmo assim, ja fazem 15 minutos e ate agora só processou 100 mil registros, e são mais de 2 milhoes, não tem condições assim, gente to vendo que não tem o que fazer, vou ter de criar um incremental mesmo e ja era.

nicolett_yuri

O incremental vai resolver o seu problema.

Depois veja se existe a necessidade de separar a tabela para o cálculo

Anonymous
Not applicable
Author

Nunca implementei um incremental Yuri voce tem algum exemplo, a lógica eu até sei, mais no qlikview nunca implementei, e outra, ja esta separado o calculo da tabela e mesmo assim demorou 13 horas pra calcular tudo !

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Boa noite Wagner.

Se o incremental for em arquivo txt (do tipo de log), tem o comando incremental do load no Qlik que faz isto automaticamente.  Mas somente para arquivo txt.

Se for banco, depende de ter data/hora ou um numero sequencial da ultima leitura, para continuar.

Ainda tem a questão se tem update/delete nos dados ja lidos.....

Segue um exemplo de incremental em tabela que nao tem delete nem update

Eu verifico se ja tem arquivo QVD. Se tem, entao tenho um ponto para continuar.

Leio o banco e tendo o QVD anterior concateno e salvo sobre o QVD (vai crescendo....).

Se tiver update/delete ai muda um pouco.  Tem que ter uma data/hora alteracao e where exists e not exists  mas no manual tem exemplos de como fazer.

//=================================================================================================================================

//

LET vQvdExists = if(FileSize('$(STGPath)\$(STGPrefixo)CDPOS.QVD') > 0, -1, 0);

IF $(vQvdExists) THEN

  MaxSeq:

  LOAD MaxString(CHANGENR) as MaxSeq FROM [$(STGPath)\$(STGPrefixo)CDPOS.QVD] (qvd);

  LET vIncrementalExpression = ' and CHANGENR >=' & chr(39) & peek('MaxSeq') & chr(39);

  DROP table MaxSeq;

ELSE

  LET vIncrementalExpression = '';

END IF

TRACE '$(vIncrementalExpression)';

//=================================================================================================================================

CDPOS:

SQL SELECT * FROM CDPOS Where TABNAME = 'MARA' and FNAME = 'MSTAE' and OBJECTCLAS = 'MATERIAL' $(vIncrementalExpression);

//

IF $(vQvdExists) THEN

  CONCATENATE (CDPOS) LOAD * FROM $(STGPath)\$(STGPrefixo)CDPOS.QVD (qvd) WHERE NOT exists(CHANGENR);

END IF

//

STORE CDPOS INTO $(STGPath)\$(STGPrefixo)CDPOS.QVD(QVD);

DROP TABLE CDPOS;

//=================================================================================================================================

//

furtado@farolbi.com.br
Anonymous
Not applicable
Author

Galera eu gostaria de agradecer de coração ao pronto atendimento que eu tive por partes de vocês, vocês são foda mesmo.

seguinte, eu fiz um compilado de tudo o que vocês me disseram, e fiz o seguinte, as comparações de datas com interval e floor eu separei, ou seja, utilizei o floor ja na criação de todos os campos de data que eu utilizei na comparação la no calculo,  fiz um load em cima do primeiro load da fato para fazer o calculo dessa diferença com o interval e criei um campo quantidade, com isso eliminei um IF la no calculo, dentro do pow a mesma coisa, eu eliminei os interval que tinha la e retornava ja o calculo pronto pra dentro da funcao.

com isso sem usar o incremental, baixei de 14 horas para 15 minutos.....

tudo isso só foi possivel graças as explanações de vocês, meu muito obrigado, aprendi mais essa, ou melhor, mais essas, porque só neste post eu aprendi muitas coisas ao mesmo tempo sobre como o qlikview processa os dados.

mais uma vez meu muito obrigado ao yuri.nicolett (ai Yuri ja estou ficando bom só falta seu convite pra equipe estou no aguardo ainda) ao ALESSANDRO FURTADO (não consegui achar seu nome para mencionar alessandro) que me enviou os exemplos e achou o erro na aplicação.

nicolett_yuri

Opa Wagner, sempre que precisar estarei por aqui!

Mande seus contatos, sempre estamos com vagas abertas.

Clever_Anjos
Employee
Employee

Já conseguiu a resposta? Se sim, escolha uma e marque como "Correta" para fechar o tópico e nos ajudar a manter a comunidade organizada