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: 
girino777
Creator III
Creator III

Gráfico Complicado

Olá Pessoal

Boa Noite à Todos..!!

Estou com um bom pepino para resolver.

Já pensei em tudo, mas não consegui chegar a uma solução.

É o seguinte: 

Preciso montar um gráfico de linhas com o valor do faturamento diário dos últimos 30 dias.

Até aqui tudo bem.

O problema é que eu preciso fazer o calculo da seguinte forma:

O ultimo dia e a soma dos últimos 30 dias divido por 30

O penúltimo dia e a soma dos últimos 30 dias divido por 30

O Antepenúltimo dia e a soma dos últimos 30 dias divido por 30

E assim por diante.....até 30 períodos.

Não sei se consegui passar a lógica.

Tá dando a maior dor de cabeça. 

Se alguém tiver alguma dica, agradeço desde já. 

Renato

1 Solution

Accepted Solutions
nilo_pontes
Partner - Creator
Partner - Creator

Renato,

Dá uma olhada no arquivo anexo se te atende.

Utilizei a formula RangeAvg(Above(Sum(Valor),0,30)).

Abraços,

Nilo

View solution in original post

11 Replies
Anonymous
Not applicable

Oi, Renato.

Tenta esta expressão:

(RangeSum(Above(Sum(Venda_Liquida), 1, 29)) + Sum(Venda_Liquida))/(RangeSum(Above(1, 1, 29)) + 1)

Os dias no gráfico abaixo do trigésimo serão calculados pela soma do dia com os dias anteriores e divisão pelo número do dia. Por exemplo, o quinto dia a aparecer no gráfico será calculado pela soma dos 4 dias anteriores mas o próprio quinto dia e o resultado dividido por 5. Os dias a partir do trigésimo serão calculados como você quer: soma dos 29 dias anteriores com o dia em questão e divisão por 30.

Infelizmente, a função Above não consegue buscar pontos fora do gráfico. Ou seja, se você selecionar junho, reduzindo os pontos no gráfico para os 30 dias de junho, ela não consegue pegar os valores de maio para calcular os primeiros dias de junho. Se você não quiser esse comportamento, acho que você terá que resolver o problema no script.

girino777
Creator III
Creator III
Author

Bom Dia Bruno.!

É quase isso que eu preciso..!! 

Resumindo, o que eu quero é a média dos últimos 30 dias uteis, sempre acumulando no ultimo e desprezando o primeiro.

Ex:

Se fosse hoje:

31/07/2014 (Seria a media de faturamento dos últimos 30 dias uteis)

30/07/2014 (Seria a media de faturamento dos últimos 30 dias uteis)

29/07/2014 (Seria a média de faturamento dos últimos 30 dias uteis)

E assim por diante.... até 30 períodos

Abs.

Renato 

Anonymous
Not applicable

Oi, Renato.

Você repetiu nesse post a mesma coisa que você disse no primeiro. kkkkk. Só acrescentou que quer dias úteis.

De qualquer forma, na conta da expressão que eu dei só vão entrar os dias em que houve faturamento. Então, se não se fatura nos fins de semana, só vão aparecer os dias úteis na expressão.

Com eu disse, com essa expressão, você tem problemas para calcular de forma exata os primeiros dias do gráfico se o mesmo tiver menos que 59 dias. Se você quer mostrar apenas 30 dias, você pode tentar fazer o seguinte:

Deixa o gráfico mostrar todos os dias disponíveis mas vai na aba Apresentação e configura para ele ter barra de rolagem com valor 30 e invertido. Assim, só os últimos 30 dias aparecerão por default no gráfico mas todos os valores serão calculados direito já que há dias anteriores "escondidos" à esquerda do gráfico. Se quiser "ocultar" a barra de rolagem, é só colocar ela com a mesma cor de fundo do gráfico.

Se essa solução não for suficiente, você vai ter que dar upload em um qvw de exemplo para que possamos ajudá-lo melhor.

girino777
Creator III
Creator III
Author

Bom Dia.!

Segue um modelo em Excel como exemplo.

No exemplo, o gráfico deveria plotar os valores que estão em amarelo.

Muito Obrigado. 

Renato

nilo_pontes
Partner - Creator
Partner - Creator

Renato,

Dá uma olhada no arquivo anexo se te atende.

Utilizei a formula RangeAvg(Above(Sum(Valor),0,30)).

Abraços,

Nilo

Anonymous
Not applicable

Olha aí, Renato.

Fiz um arquivo do jeito que eu venho falando com os dados do seu exemplo . Veja se resolve o seu problema.

Abraço.

girino777
Creator III
Creator III
Author

OK.! Pessoal.

Vou testar e retorno.

Por enquanto, muito obrigado mesmo. 

Renato

girino777
Creator III
Creator III
Author

Boa Tarde Bruno e Nilo..!!

Acho que descobri o problema.

Realizei vários testes conforme vocês me passaram e funcionou perfeitamente.

O problema é no modelo que estou trabalhando, pois existe um intervalo muito grande entre os últimos períodos.

Ou seja, no modelo que estou trabalhando, como é um teste, não foi atualizado com as informações atuais.

Com certeza, quando atualizar, vai funcionar.

Ex:

Data

28/07/2014

21/07/2014

27/06/2014

12/06/2014

11/06/2014

10/06/2014

Daqui em diante esta correto...

Pergunta:

É possível fazer o calculo considerando apenas os dias onde o valor é maior que zero ou informar um flag de dias uteis. Dai ele só realiza o calculo para os dias que eu definir no flag? 

Muito Obrigado Novamente .

Abs

Renato

girino777
Creator III
Creator III
Author

Olá.

Tentei mas não funcionou..!!!

Seria algo parecido com isso.

RangeAvg(Above(SUM({$<DiaUtil={'0'}>} NF_VLR_VENDA_LIQUIDA),0,30))

Abs

Renato