Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
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á!
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")))
)))
)
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())))
)
Se não funcionar, por favor anexe um exemplo dos seus dados
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:
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.
Pode anexar um exemplo dos seus dados?
Se possivel o seu qvw
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")))
)))
)