Previsão de séries temporais no Snowflake usando SQL
Previsão de demanda, cadeia de suprimentos e gerenciamento de estoque, planejamento financeiro são importantes para as operações comerciais. Modelstar permite que você faça isso no Snowflake, com apenas 1 linha de SQL.
O que é Previsão de Séries Temporais e seus casos de uso?
A previsão de séries temporais é uma técnica para prever valores com base em dados históricos de amostragem de tempo.
A previsão é rudimentar para a gestão
A previsão pode ajudar as empresas a tomar decisões de negócios adequadas sobre gerenciamento da cadeia de suprimentos, gerenciamento de estoque (sobre quanto e quando reabastecer), planejamento financeiro, roteiro de produtos e estratégia de contratação, etc. Com resultados de previsão precisos e oportunos, o gerenciamento de negócios pode ter uma melhor compreensão de como alocar recursos ou aproveitar os ventos favoráveis.
Desafios técnicos para previsão
A previsão é uma aplicação da análise de séries temporais. Existem vários componentes a considerar:
- Sazonalidade: mudanças periódicas ao longo do tempo. Exemplo: as férias de verão e inverno são anuais, ou o maior consumo de café pela manhã é diário.
- Tendência: mudanças não periódicas contínuas. Exemplo: Crescimento das vendas da empresa nos últimos 5 anos.
- Eventos disruptivos: mudanças repentinas. Pode ser impulsionado por fatores previsíveis, como feriados ou manutenção de serviço, e problemas imprevisíveis, como erros aleatórios ou bugs.
Desafios técnicos de implementação
O Python possui um rico ecossistema para implementar algoritmos de aprendizado de máquina e previsão. O novo recurso Snowpark do Snowflake, que traz o Python para o seu Data Warehouse, usando UDFs para executar o Python no SQL, é um divisor de águas nas transformações que você pode executar em seus dados. No entanto, pode ser assustador e demorado se você deseja implementar uma solução de ponta para executar a previsão. A Modelstar resolve isso fornecendo uma solução simplificada para trazer os superpoderes do Python para o SQL.
Modelstar é um projeto de código aberto e é construído sobre os recursos lançados recentemente do Snowflake, como o Snowpark. Ele lida automaticamente com dependências, artefatos de modelo e E/S de arquivo na computação Snowflake.
O SQL 1-liner para previsão
Modelstar permite enviar e gerenciar modelos de previsão e visualizar resultados de modelagem com 1 linha de SQL dentro do Snowflake. Nos bastidores, o Modelstar fornece algoritmos de previsão pré-construídos e os expõe como um procedimento SQL armazenado em seu banco de dados. Neste exemplo, usaremos univariate_time_series_forecast
( API doc ). Essa API é baseada em uma biblioteca de código aberto , o Prophet , que é um dos algoritmos de previsão mais usados na indústria.
Este tutorial fornece as etapas para criar um modelo de previsão de série temporal e um relatório. Cobre:
- Conceito básico: sobre casos de uso e tecnologia de previsão de vendas.
- Ferramenta Modelstar CLI: guia de instalação Modelstar
univariate_time_series_forecast
Sintaxe SQL: o SQL 1-liner para fazer previsões- Relatório de previsão: resultados de previsão prontos para serem consumidos pelas equipes de negócios
Preparação para a jornada
Este é um guia de início rápido para configurar o Modelstar se você for um usuário do Modelstar pela primeira vez.
Passo #1: Instale o Modelstar
$ pip install modelstar
Verifique a instalação com uma verificação de versão rápida:
$ modelstar --version
Passo #2: Inicialize um projeto
$ modelstar init forecast_project
Agora você verá uma forecast_project
pasta criada em seu diretório de trabalho.
Etapa 3: configurar a sessão do
Dentro da forecast_project
pasta, encontre o arquivo modelstar.config.yaml
e abra-o com seu editor favorito. Adicione as informações e credenciais da sua conta do Snowflake a ela. Sinta-se à vontade para nomear a sessão com qualquer nome. Neste exemplo, usamos snowflake-test
. As credenciais neste arquivo são usadas para se conectar ao data warehouse do Snowflake. (Observação: não confirme o arquivo modelstar.config.yaml em seu CI/CD, controle de versão.)
# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
- name: snowflake-test
connector: snowflake
config:
account: WQA*****
username: <username>
password: <password>
database: MODELSTAR_TEST
schema: PUBLIC
stage: test
warehouse: COMPUTE_WH
Passo #4: Ping floco
Agora podemos iniciar uma sessão Modelstar a partir do seu terminal. Dentro do diretório do projeto Modelstar recém-gerado (no nosso exemplo, é ./forecast_project/
), execute isto:
$ modelstar use snowflake-test
Um ping bem-sucedido deve levar a algo assim:
Etapa 5: registre o algoritmo de previsão no Snowflake
O Modelstar fornece o algoritmo de previsão pronto para uso e gerencia as dependências desse algoritmo, para que você não precise fazer isso. Para disponibilizá-lo em seu armazém do Snowflake, execute o seguinte comando:
$ modelstar register forecast:univariate_time_series_forecast
Passo #6: Carregue dados de amostra de vendas para o Snowflake (opcional, se você estiver usando seu próprio conjunto de dados )
Se você quiser experimentar o algoritmo de previsão em um conjunto de dados de vendas de amostra, execute este comando para criar uma tabela de dados em seu data warehouse. Você pode pular esta etapa se quiser usar seus próprios dados.
$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE
Crie um modelo de previsão usando um SQL 1- linear
Execute este script em uma planilha
Use o seguinte comando no Snowflake para criar o modelo de previsão (o exemplo abaixo usa os dados de amostra carregados na etapa 6):
CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');
Para executar o algoritmo de previsão em seus próprios dados
Sob o capô, o algoritmo de previsão é executado dentro do Snowflake como um procedimento armazenado. Leva os seguintes parâmetros:
Para configurar seu próprio período de previsão, verifique este documento da API para obter uma lista completa de alias de unidade.
Confira o resultado
Após a conclusão do treinamento do modelo, na janela Snowflake Results, uma execução bem-sucedida deve gerar uma string json semelhante a esta:
{
"return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
"run_id": "3NvQXnHQqUdYG4Fu"
}
Verifique a tabela
Vamos verificar a tabela de resultados da execução usando:
SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;
DS
(datetime
): data e horaY_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(float): média, títulos inferiores e superiores do valor previsto (verUncertainty Intervals
o significado na seção Glossário).
Um relatório que registra as informações sobre a execução, com os artefatos de aprendizado de máquina, é gerado automaticamente com o Modelstar. Para verificar o relatório, basta executar este comando em seu computador local:
$ modelstar check <run_id>
Como menciona, um relatório aparecerá no seu navegador:
O que há no relatório
O relatório inclui 3 seções:
- Metainformações desta execução
- Gráfico de previsão: para verificar a qualidade da modelagem e os resultados da previsão.
- Análise de componentes: para ilustrar a tendência e a sazonalidade que seu modelo “aprendeu”, incluindo uma tendência geral e sazonalidade anual e semanal (padrões cíclicos ao longo de 1 ano/semana).
Previsão dentro e fora da amostra: Na previsão dentro da amostra, você pode verificar como o modelo de previsão se ajusta aos dados reais. A previsão fora da amostra mostra a previsão do futuro.
Intervalos de incerteza: a banda entre os limites superior e inferior. Isso significa que há uma probabilidade de 80% de que o valor verdadeiro esteja dentro desse intervalo. Um maior requisito de certeza leva a uma banda mais larga (veja o artigo de Bartosz ). A incerteza também cresce à medida que avançamos no futuro, levando a uma banda ampliada em função do tempo.
Conclusão
A previsão é rudimentar para a gestão empresarial. Nosso objetivo era enviar uma função de previsão para o Snowflake para treinar um modelo de aprendizado de máquina e fazer previsões usando-o. Conseguimos tudo isso com apenas 1 linha de SQL. Junto com isso, é gerado um relatório de execução contendo os detalhes da execução junto com a análise de previsão. Isso foi possível graças a Modelstar .
Confira o repositório GitHub do Modelstar: aqui , marque-o para ser atualizado com as últimas novidades. Em caso de bugs, problemas ou solicitações de recursos para seu caso de uso, entre em contato com o Github ou abra um problema no GitHub .
- Repositório GitHub:https://github.com/modelstar-labs/modelstar
- Documentação:https://modelstar.io/docs/quickstart/