Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde,
ha uma situação que estou ficando estressado em tentar testar,
tenho um projeto de analise de produtos onde a tabela de apenas 1 mes possui 8 Milhões de registros, tenho um gráfico do tipo Tabela Dinâmica com as dimensões de Produtos, Unidades e um ValueList com alguns dados.
Ele demora alguns segundos a cada seleção e carrega, agora na WEB ele fica em branco..
Ele nem tenta processar. Existe alguma forma de trabalhar em uma tabela, uma quantidade grande de dados?
OBS: Os dados exibidos são de uma tabela teste.
Hamilton, bom dia.
Eu normalmente reduzo o tempo padrão de 60 segundos para que caso algum objeto necessite mais tempo, possa ser feito um trabalho nele para não inviabilizar o server (imagina 2 ou 3 usuários abrindo um objeto que consuma muita RAM....pode colocar o server como não respondendo....)
Comecei a fazer isto e ao mesmo tempo usar as condicionais mencionadas pelo nicolett.yuri depois que um cliente estava com o server volta e meia com o uso de RAM e CPU no teto....
Eu tenho por premissa que a resposta tem que ser em sub-segundo, mas nada nunca pode levar mais do que alguns segundos. Se algo for muito pesado, adoto os filtros / condicionais para agilizar.
Sobre o erro de aparecer o gráfico na web, não pode ser versão de desenvolvimento e a versão server diferente e esta acontecendo o que esta no link abaixo.
Using SR11 “SilentErrorInChart” Switch | Qlikview Cookbook
Hamilton, com o ValueList você já perde bastante da performance de cálculo de seu gráfico. A melhor prática nesse caso é criar uma tabela isolada de seu modelo (data island) com com as strings que precisa, por exemplo:
TIPO_EXPRESSAO:
LOAD
dual('PM',1) as %Tipo
AutoGenerate(1);
CONCATENATE
LOAD
dual('PD',2) as %Tipo
AutoGenerate(1);
CONCATENATE
LOAD
dual('RD',3) as %Tipo
AutoGenerate(1);
/* Depois você pode, se quiser, melhorar esse código para montar o %Tipo */
Em seu gráfico, utilize o %Tipo na dimensão e a expressão deve conter:
Pick(%Tipo,
Num(SUM(QTDE), '#.##0,00'),
Num(( SUM(QTDE) * DIAS_UTEIS_MES ) / DIAS_UTEIS, '#.##0,00'),
Num(SUM(QTDE), '#.##0,00')
)
OBS: o Pick vai respeitar a ordenação, ou seja, a primeira expressão se refere ao PM, a segunda ao PD e a terceira ao RD.
Fazendo dessa forma você já vai melhorar bastante a performance de seu gráfico.
Em relação a quantidade de linhas, você consegue criar apenas condicionais para que o gráfico seja, ou não, calculado. Em relação ao número de linhas, provavelmente você deve Contar o número de produtos, por exemplo: if( Count(Cod_Produto)>500,0,1) --- Assim ele só exibe o gráfico caso tenha até 500 produtos, ou seja, 500 linhas.
Yuri, lembrando que o QlikView não é "short circuiting", então todas as expressões serão resolvidas e apresentada a correta.
Segue um post que fala sobre isto.
help - performance improvements
Sim sim, a vantagem é a não utilização de uma dimensão calculada.
Alessandro, o problema não é aparecer nulo, o problema que o gráfico não carrega os dados, selecionando UMA loja ele aparece os produtos, agora quando eu seleciono outras, ele "trava" na quela loja. Veja a imagem abaixo, deveria aparecer várias lojas, mas travou na primeira seleção.
Yuri, fiz a questão dos gráficos e do Count, acredite se quiser, não resolveu.
Se eu mandar exportar o gráfico para o excel, exporta normalmente, mas não exibe na tela.
Tentei com outro tipo de gráfico, de tabela, a mesma coisa da errada. Se eu seleciono poucos produtos ele aparece, caso contrário ele nem calcula. Não fica calculando como seria o normal, ele apenas "desiste"
ACHEI O ERRO, porém não entendi.
Existem algumas expressões da qual eu coloquei ONLY(bloqueado), Only(situacao) para aparecer os dados do produto, ao comentar essas expressões, aparece os valores normalmente, independente de quantos registros.
Pode ser isto mesmo?
Estraho...
o ONLY vai retornar o valor ou descrição da coluna caso este resultado seja único para a dimensão avaliada, caso contrário retorna Null.
Yuri, você tem razão, me equivoquei. Fiz vários testes e fiquei feliz quando pareceu funcionar, mas não hehe. Acredito que tenha achado outro problema. Imagine que o diretor da empresa ele quer as informações em 2 níveis na mesma tela, ele quer ter a visão dos produtos por loja, e os grupos por loja, quando ele arrastar a tela para o lado ele quer que fique uma coluna em baixo da outra
Como temos mais de 20 lojas, o gráfico cria a barra horizontal, então eu deixei a tela em 25% e arrastei o gráfico todo para o lado, então voltei para 100%. Resultado, o gráfico perdeu o slidebar e a barra ficou na tela do projeto, ao correr para o lado, os dois gráficos andam juntos.
Fiz os testes com o gráfico do tamanho normal e ele funcionou. Acredito que esse possa ser o problema de não aparecer nada, o gráfico por algum motivo não pode ser tão grande. Agora eu pergunto, caso seja isso, como vou fazer para dois gráficos com informações diferentes andarem juntos para que as lojas fiquem uma em baixo da oura?
Hamilton, se for objetos diferentes eles não vão rodar juntos...
Eu já vi uma solução com o Objeto Deslizador, mas acho que é muita gambiarra
Vou ver se encontro e te envio (foi aqui no grupo Brasil mesmo)
Procurei e procurei, mas ainda não encontrei....