Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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.
O incremental vai resolver o seu problema.
Depois veja se existe a necessidade de separar a tabela para o cálculo
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 !
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;
//=================================================================================================================================
//
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.
Opa Wagner, sempre que precisar estarei por aqui!
Mande seus contatos, sempre estamos com vagas abertas.
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