Avalados por :

Guia completa para calcular a média móvel em séries temporais com o SAP HANA XS Advanced

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 5 Vistas
0
Cargando...
Neste post do blog, aprenderemos sobre a média móvel, também conhecida como média móvel, média corrente, média móvel ou média móvel. Muitas vezes, você verá médias móveis sendo usadas em dados de séries temporais para analisar tendências, sendo calculadas como a média dos valores atuais e um número especificado de valores imediatamente anteriores ou seguintes para cada ponto no tempo.

Este post do blog foi projetado usando o SAP HANA XS Advanced (SAP Web IDE). (SAP HANA on-premise e SAP HANA, edição express).

Caso de uso: - Uma média móvel nos ajuda a encontrar tendências de uma medida específica para uma janela de tempo determinada.

Neste post do blog, discutiremos três cenários de Média Móvel.

  1. Média móvel para valores imediatamente seguintes.

  2. Média móvel para valores imediatamente anteriores.

  3. Média móvel para valores imediatamente anteriores e seguintes.




DADOS e SOLUÇÃO

Em nossa tabela, temos três colunas (ANO_MES, MÊS e RECEITAS). Este é um conjunto de dados de séries mensais, pois cada receita está associada a um mês específico.




Cenário 1: -

Média móvel para valores imediatamente seguintes.

Neste caso, calcularemos a média para uma janela de linhas entre a LINHA ATUAL E 3 LINHAS SEGUINTES e a média deve ser calculada apenas usando os valores de receitas da linha atual e das três linhas seguintes. Em seguida, para cada linha no conjunto de resultados, a média móvel será calculada com base em um conjunto diferente de quatro valores de receitas. Podemos ver isso na seguinte fórmula:

Média Móvel = ( Receitas (Linha Atual) + Receitas (Próxima Linha) + Receitas (Linha Atual+2) + Receitas (Linha Atual+3) ) / 4

Para o mês de JANEIRO, a média móvel de três meses é calculada como a média das receitas daquele mês (111) e dos três meses seguintes que são FEB (120), MAR (123) e ABR (100). Portanto, a média móvel para JANEIRO é a média desses quatro valores, ou 113,5 como mostrado na imagem abaixo.


A média móvel é calculada da mesma forma para cada um dos meses restantes.

Para alcançar isso, utilizei a Função de Tabela, que pode ser consumida adicionalmente em uma Visualização de Cálculo para obter o resultado.

Na consulta a seguir, veremos como usar o HANA SQL para calcular a média móvel para a coluna "RECEITAS" com base no valor das receitas do mês atual e dos 3 valores seguintes.



SELECT "ANO_MES","MÊS","RECEITAS",
       AVG("RECEITAS") OVER (ORDER BY "ANO_MES" ROWS BETWEEN CURRENT ROW AND 3 FOLLOWING) MédiaMóvel
FROM "ESQUEMA"."TABELA" ;

RESULTADO: -


NOTA: -

Para o mês de OUT, quando tentamos ver os três meses seguintes, vemos que restam apenas dois meses. Por favor, consulte o conteúdo original para mais informações.
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Sourin,

Obrigado pelo comentário e por apontar isso.

Eu também não consigo fazer e recebo o mesmo erro.


Editei a postagem do blog e removi a última seção.
Mais uma vez, obrigado pelas palavras gentis.

Cumprimentos,

Naim Khan

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...
Olá,



Acho que formulei mal a minha pergunta.

A pergunta é "É possível usar variáveis (X e Y) como mencionado no blog?" Não consigo fazê-lo, pois o HANA espera um valor CONSTANTE em seu lugar.

Acredito que isso não é possível.



Você poderia compartilhar um exemplo funcional (Código SQL completo) de como usar uma variável em vez de constantes? Também pode usar uma subconsulta.

Avise-me.

Saudações,
Sourin
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Sourin,

Obrigado pelas palavras gentis, eu tentei por vários anos e nesse caso temos que usar PARTITION BY conforme mostrado abaixo.

Quando você deseja que os valores do mesmo ano sejam considerados, então use PARTITION BY.

SELECT "YEAR_MONTH","YEAR","REVENUE",
            AVG("REVENUE") OVER (PARTITION BY "YEAR" ORDER BY "YEAR_MONTH" ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING) RollingAverage
    FROM "SCHEMA"."TABLE";
    

Quando você deseja os valores independentemente do ano, então não use PARTITION BY.

SELECT "YEAR_MONTH","YEAR","REVENUE",
            AVG("REVENUE") OVER (ORDER BY "YEAR_MONTH" ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING) RollingAverage
    FROM "SCHEMA"."TABLE";
    

Espero ter esclarecido suas dúvidas.
Mais uma vez, obrigado pelas palavras gentis.

Atenciosamente,
Naim Khan

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...
Olá,



Obrigado pela explicação detalhada.

O que acontece quando queremos fazer uma média móvel da "RECEITA" para vários grupos de (Ano, Mês) em uma única consulta.

Tentei usar uma subconsulta; no entanto, a função AVG() espera uma "constante" antes de "PRECEDING" e "FOLLOWING". É possível obter o valor de uma subconsulta e usá-lo no lugar de "X" e "Y"?
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?