Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Variação Acumulada do Ano anterior

Boa noite pessoal,

Estou com uma dúvida:

Sabendo que a variação é o Mês Atual - Mês anterior, como posso achar a variação acumulada do ano anterior?

Obs.: Vale ressaltar que a variação de Janeiro/2012 (no caso) = Jan/2012 - Dez/2011

Agradeço desde já qualquer ajuda!

4 Replies
Not applicable
Author

Olá amigo veja analise de conjunto no manual de referencia pag 380.

Ex:

Sum({$<Year={$(=Only(Year))}>}  Sales) - Sum({$<Year={$(=Only(Year)-1)}>}  Sales)

abs,

Marco

Not applicable
Author

A expressão que o Marco colocou funciona, mas retorna a variação do valor do mes em relação ao mesmo mes do ano anterior.

Para retornar o mes anterior, considerando a questão do mes de janeiro, eu faria algo assim:

if (num(Mes) > 1,

  sum(Valor) - sum({$<Mes = {$(=max(Mes)-1)}>}  Valor),

  sum(Valor) - sum({$<Mes = {12},Ano = {$(=max(Ano)-1)} >}  Valor),

)

Para isso funcionar, teria que ter um Ano e um Mes selecionado.

Not applicable
Author

Obrigado pela ajuda senhores.

Pelo que vi das soluções, não houve acúmulo das variações.

Quero o acúmulo da variação de cada mês, exemplo:

Jan/2011 - Dez/2010 = Var Jan

Fev/2011 - Jan/2011 = Var Fev

Mar/2011 - Fev/2011 = Var Mar

          .                              .

          .                              .

          .                              .


Varicação Acumulada do Ano Anterior  = Var Jan+ Var Fev+ Var Mar+ ...

Agradeço desde já.

cesaraccardi
Specialist
Specialist

Olá Edécio,

Acredito que a minha sugestão não seja muito diferente das anteriores, até porque este problema é bem específico e recorrente... Eu sugiro que você utilize um campo no formato mês/ano, se não tiver você pode criá-lo à partir de um campo com data completa (DD/MM/YYYY) assim:

Date(Data,'MMM/YYYY') as AnoMês

É interessante que este campo esteja formatado como data para facilitar os cálculos, assim você pode usar funções como "AddMonths" que já faria o cálculo do mês anterior a Jan/2012, por exemplo, sem que você precise verificar manualmente.


A expressão pode ser escrita de forma otimizada com o set analysis da seguinte maneira:


1-(sum({$<AnoMês={'$(=Only(AnoMês))'}>} Valor)/sum({$<AnoMês={'$(=AddMonths(Only(AnoMês),-1))'}>} Valor))


A expressão é formada de 2 elementos, o primeiro calcula o Valor do mês na dimensão AnoMês e o segundo calcula o Valor do mês anterior. Para esta lógica funcionar você precisa colocar o campo AnoMês na dimensão da tabela.


Abraços,
Cesar.