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

Dúvida: Soma acumulada para os meses restantes

Olá, pessoal!

Sou novato e desenvolvo alguns painéis básicos no trabalho. Recebemos uma alteração de requisitos que está me deixando maluco, pois não consigo fazer funcionar de jeito nenhum!

Segue o gráfico:

Chart.png

O que acontece?

A medida "Previsão" é um campo calculado através da seguinte fórmula:

IF([Mês_comp] <=  Mês,

    Money(rangesum(above(sum(Valor),0, rowno()))),

    Money(rangesum(above(sum(Valor_Previsao),0, rowno())))

   

)

A mudança de requisitos citada acima é para calcular o valor de previsão somando o último valor da medida "Faturado Acumulado" aos valores de previsão para os meses remanescentes, de forma acumulada.

Seria algo como:

IF([Mês_comp] <=  Mês,

    Money(rangesum(above(sum(Valor),0, rowno()))),

    Money(rangesum(above(sum(Valor),0, rowno()))) + Money(rangesum(above(sum(Valor_Previsao),0, rowno())))

   

)

Porém quando executo Money(rangesum(above(sum(Valor_Previsao),0, rowno()))), são somados os valores desde Janeiro, e não somente a partir de Maio (conforme ilustrado no gráfico).

Alguém pode me salvar nesta?

Agradeço desde já!

Labels (2)
1 Solution

Accepted Solutions
LHBR
Contributor II
Contributor II
Author

Clever,

consegui resolver com a ajuda de um amigo do trabalho.

A solução foi criar uma tabela inline contendo o número associado ao mês do ano (ex: Janeiro = 1), e então subtrair este valor do número correspondente ao último mês faturado. Assim, o Qlik entende que deve começar a fazer o rangesum a partir daquele ponto, ao invés de considerar o ano todo.

Simples, mas levou 3 dias até chegarmos a esta solução!

Abaixo o código refinado:

Money(IF(max("Número do último mês que teve faturamento")=0, 0,

    IF(max("Número do último mês que teve faturamento")>0,

        IF(not(isnull("Nome do mês de Faturamento")),rangesum(above(sum("Valor Faturado"),0, rowno())),rangesum(above(sum("Valor Faturado"),0, rowno())) +    rangesum(above(sum("Valor da Previsão"),0,"Número do mês da tabela Inline"-max("Número do último mês que teve faturamento")))

        )))

)

View solution in original post

5 Replies
Clever_Anjos
Employee
Employee

Tente somente com isso

IF([Mês_comp] <=  Mês,

    Money(rangesum(above(sum(Valor),0, rowno()))),

    Money(rangesum(above(sum(Valor)))) + Money(rangesum(above(sum(Valor_Previsao),0, rowno())))

  

)

Clever_Anjos
Employee
Employee

Se não funcionar, por favor anexe um exemplo dos seus dados

LHBR
Contributor II
Contributor II
Author

Olá, Clever!

Obrigado pela resposta! Infelizmente, não funcionou. O que ele faz é somar o acumulado da previsão desde o início de Janeiro, e não a partir de Maio, quando não há valor de faturamento.

Segue o modelo utilizado:

Modelo.png

Não sei se ficou claro, mas o que tenho de fazer é o seguinte:

- Para os meses em que há valor de faturamento (barrinha verde), usar este valor como previsão, ao invés do valor disponibilizado na tabela "Previsão Fat";

- Para os meses em que não houver faturamento, somar o último valor disponível ao valor previsto do mês em que não houve faturamento, e ir acumulando até dezembro.

Na imagem original, o faturamento acumulado acaba em Abril. Logo, o valor da previsão será o valor de fato faturado (não faz sentido, mas é assim o requisito). Já em Maio, como não houve faturamento, deve-se pegar o valor de abril e somar ao previsto de Maio, e assim sucessivamente (Junho soma o previsto de Junho + Faturado de Abril + previsto de Maio...).

O problema acontece justamente na parte do "somar o acumulado previsto", pois o rangesum pega desde Janeiro, e não deveria.

Clever_Anjos
Employee
Employee

Pode anexar um exemplo dos seus dados?

Se possivel o seu qvw

LHBR
Contributor II
Contributor II
Author

Clever,

consegui resolver com a ajuda de um amigo do trabalho.

A solução foi criar uma tabela inline contendo o número associado ao mês do ano (ex: Janeiro = 1), e então subtrair este valor do número correspondente ao último mês faturado. Assim, o Qlik entende que deve começar a fazer o rangesum a partir daquele ponto, ao invés de considerar o ano todo.

Simples, mas levou 3 dias até chegarmos a esta solução!

Abaixo o código refinado:

Money(IF(max("Número do último mês que teve faturamento")=0, 0,

    IF(max("Número do último mês que teve faturamento")>0,

        IF(not(isnull("Nome do mês de Faturamento")),rangesum(above(sum("Valor Faturado"),0, rowno())),rangesum(above(sum("Valor Faturado"),0, rowno())) +    rangesum(above(sum("Valor da Previsão"),0,"Número do mês da tabela Inline"-max("Número do último mês que teve faturamento")))

        )))

)