none
Calculo % do registro anterior RRS feed

  • Pergunta

  • Tenho um tabela fato que tem nela guardada a evolução de preços de produtos.

    Registros como:

    DataRef IDProduto ValorVenda

    201404      4825 19,32

    201405      4825 20,00

    201406      4825 21,50

    ***Imaginem esta tabela com inúmeros produtos e registros de 5 anos***

    Preciso criar um MDX que calcule o % de evolução do preço por mês, trimestre e ano que é a hierarquia de tempo que uso.

    Por exemplo de 201404 para 201405 o preço do produto 4825 aumentou 3,4%.

    de 201405 para 201406 o preço do produto 4825 aumentou 7%

    Obrigado

    Ricardo

    quinta-feira, 3 de julho de 2014 12:01

Respostas

  • Ricardo,

    Verifiquei que você tem este histórico de preço!!!

    Pois neste caso, é melhor você fazer uma expressão, pegando o preço por exemplo de Abril de 2015 multiplicando pelo preço de Abril de 2015 e dividindo por 100.

    Eu particularmente acho que este é melhor você realizar este tipo de processamento antes do relatório ser apresentado.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]




    quinta-feira, 3 de julho de 2014 15:08
  • A idéia do Junior é boa em realizar o cálculo previamente.

    Vc pode também montar um MDX. Segue uma idéia abaixo:

    WITH MEMBER [Measures].[PercentualEvolucao]
    as 
    (SUM([Data].[Ano-Mês].currentMember,[Measures].[Valor Produto])
    	/
    SUM([Data].[Ano-Mês].Prevmember,[Measures].[Valor Produto]) )-1 
    , FORMAT_STRING = '0.0%'
    
     SELECT NON EMPTY {		[Measures].[Valor Produto],
    						[Measures].[PercentualEvolucao] } ON COLUMNS, 
    	NON EMPTY { (
    		[Data].[Ano-Mês].[Ano-Mês].ALLMEMBERS ) } 
    	ON ROWS 
    		FROM [Cubo] WHERE ( [Data].[Ano].&[2014] ) 

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    sexta-feira, 4 de julho de 2014 12:28

Todas as Respostas

  • Ricardo,

    Verifiquei que você tem este histórico de preço!!!

    Pois neste caso, é melhor você fazer uma expressão, pegando o preço por exemplo de Abril de 2015 multiplicando pelo preço de Abril de 2015 e dividindo por 100.

    Eu particularmente acho que este é melhor você realizar este tipo de processamento antes do relatório ser apresentado.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]




    quinta-feira, 3 de julho de 2014 15:08
  • Neste caso eu faria uma procedure por exemplo com cursor em que toda a tabela é percorrida e o valor armazenado em um coluna como %Evol_Mes, %Evol_Trimestre, %EvolAno, já trazendo estes valores calculados para o Cubo?

    Obrigado pelo apoio.

    quinta-feira, 3 de julho de 2014 15:45
  • A idéia do Junior é boa em realizar o cálculo previamente.

    Vc pode também montar um MDX. Segue uma idéia abaixo:

    WITH MEMBER [Measures].[PercentualEvolucao]
    as 
    (SUM([Data].[Ano-Mês].currentMember,[Measures].[Valor Produto])
    	/
    SUM([Data].[Ano-Mês].Prevmember,[Measures].[Valor Produto]) )-1 
    , FORMAT_STRING = '0.0%'
    
     SELECT NON EMPTY {		[Measures].[Valor Produto],
    						[Measures].[PercentualEvolucao] } ON COLUMNS, 
    	NON EMPTY { (
    		[Data].[Ano-Mês].[Ano-Mês].ALLMEMBERS ) } 
    	ON ROWS 
    		FROM [Cubo] WHERE ( [Data].[Ano].&[2014] ) 

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    sexta-feira, 4 de julho de 2014 12:28