Automatize sua previsão de série temporal no Snowflake usando o Amazon Forecast PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Automatize sua previsão de séries temporais no Snowflake usando o Amazon Forecast

Este post é uma colaboração conjunta com Andries Engelbrecht e James Sun da Snowflake, Inc.

A revolução da computação em nuvem permitiu que as empresas capturassem e retivessem dados corporativos e organizacionais sem planejamento de capacidade ou restrições de retenção de dados. Agora, com diversas e vastas reservas de dados longitudinais, as empresas estão cada vez mais capazes de encontrar maneiras inovadoras e impactantes de usar seus ativos digitais para tomar decisões melhores e informadas ao tomar decisões de planejamento de curto e longo prazo. A previsão de séries temporais é uma ciência única e essencial que permite que as empresas tomem decisões de planejamento cirúrgico para ajudar a equilibrar os níveis de serviço ao cliente em relação às metas muitas vezes concorrentes de rentabilidade ideal.

Na AWS, às vezes trabalhamos com clientes que selecionaram nosso parceiro de tecnologia Floco de neve para oferecer uma experiência de plataforma de dados em nuvem. Ter uma plataforma que pode recordar anos e anos de dados históricos é poderoso, mas como você pode usar esses dados para olhar para o futuro e usar as evidências de ontem para planejar o amanhã? Imagine não apenas ter o que aconteceu disponível no Snowflake – sua única versão da verdade – mas também um conjunto adjacente de dados não isolados que oferece uma previsão probabilística para dias, semanas ou meses no futuro.

Em uma cadeia de suprimentos colaborativa, o compartilhamento de informações entre parceiros pode melhorar o desempenho, aumentar a competitividade e reduzir o desperdício de recursos. Compartilhar suas previsões futuras pode ser facilitado com Compartilhamento de dados do floco de neve, que permite que você colabore perfeitamente com seus parceiros de negócios de forma segura e identifique insights de negócios. Se muitos parceiros compartilharem suas previsões, isso pode ajudar a controlar o efeito chicote na cadeia de suprimentos conectada. Você pode efetivamente usar Mercado de flocos de neve para monetizar sua análise preditiva a partir de conjuntos de dados produzidos em Previsão da Amazônia.

Neste post, discutimos como implementar uma solução automatizada de previsão de séries temporais usando Snowflake e Forecast.

Serviços essenciais da AWS que permitem esta solução

O Forecast fornece vários algoritmos de séries temporais de última geração e gerencia a alocação de capacidade de computação distribuída suficiente para atender às necessidades de praticamente qualquer carga de trabalho. Com o Forecast, você não obtém um modelo; você obtém a força de muitos modelos que são otimizados em um modelo com peso exclusivo para cada série temporal no conjunto. Em resumo, o serviço oferece toda a ciência, manipulação de dados e gerenciamento de recursos em uma simples chamada de API.

Funções de etapa da AWS fornece um mecanismo de orquestração de processos que gerencia o fluxo de trabalho geral. O serviço encapsula chamadas de API com Amazona atena, AWS Lambda, e Forecast para criar uma solução automatizada que coleta dados do Snowflake, usa o Forecast para converter dados históricos em previsões futuras e, em seguida, cria os dados dentro do Snowflake.

As consultas federadas do Athena podem se conectar a várias fontes de dados empresariais, incluindo Amazon DynamoDB, Amazon RedShift, Serviço Amazon OpenSearch, MySQL, PostgreSQL, Redis e outros armazenamentos de dados de terceiros populares, como o Snowflake. Os conectores de dados são executados como funções do Lambda — você pode usar este código-fonte para ajudar a iniciar o Conector de floco de neve Amazon Athena Lambda e conecte-se com AWS PrivateLink ou através de um Gateway NAT.

Visão geral da solução

Uma das coisas que fazemos com frequência na AWS é trabalhar para ajudar os clientes a atingirem seus objetivos e, ao mesmo tempo, remover o fardo do trabalho pesado indiferenciado. Pensando nisso, propomos o seguinte solução para ajudar os clientes da AWS e do Snowflake a executar as seguintes etapas:

  1. Exporte dados do Snowflake. Você pode usar metadados flexíveis para descarregar os dados históricos necessários orientados por um fluxo de trabalho pronto para uso.
  2. Importe dados para o Forecast. Não importa o caso de uso, setor ou escala, a importação de entradas de dados preparadas é fácil e automatizada.
  3. Treine um modelo de série temporal de última geração. Você pode automatizar a previsão de séries temporais sem gerenciar a ciência de dados subjacente ou o provisionamento de hardware.
  4. Gere inferência em relação ao modelo treinado. As saídas produzidas pela previsão são fáceis de consumir para qualquer finalidade. Eles estão disponíveis como arquivos CSV ou Parquet simples em Serviço de armazenamento simples da Amazon (Amazônia S3).
  5. Use o histórico e as previsões futuras lado a lado diretamente no Snowflake.

O diagrama a seguir ilustra como implementar um fluxo de trabalho automatizado que permite que os clientes do Snowflake se beneficiem de previsões de séries temporais altamente precisas com suporte do Forecast, um serviço gerenciado pela AWS. Transcendendo o caso de uso e a indústria, o design oferecido aqui primeiro extrai dados históricos do Snowflake. Em seguida, o fluxo de trabalho envia os dados preparados para cálculo de séries temporais. Por fim, as previsões de períodos futuros estão disponíveis nativamente no Snowflake, criando uma experiência de usuário perfeita para clientes conjuntos da AWS e do Snowflake.

Embora essa arquitetura destaque apenas os principais detalhes técnicos, a solução é simples de montar, às vezes em 1 a 2 dias úteis. Fornecemos a você um código de amostra funcional para ajudar a remover o trabalho pesado indiferenciado de criar a solução sozinha e sem uma vantagem inicial. Depois de descobrir como implementar esse padrão para uma carga de trabalho, você pode repetir o processo de previsão para quaisquer dados mantidos no Snowflake. Nas seções a seguir, descrevemos as principais etapas que permitem criar um pipeline automatizado.

Extraia dados históricos do Snowflake

Nesta primeira etapa, você usa o SQL para definir quais dados deseja prever e permitir que uma consulta federada do Athena se conecte ao Snowflake, execute seu SQL personalizado e persista o conjunto de registros resultante no Amazon S3. A previsão exige que os dados históricos de treinamento estejam disponíveis no Amazon S3 antes da ingestão; portanto, o Amazon S3 serve como um buffer de armazenamento intermediário entre o Snowflake e o Forecast. Apresentamos o Athena neste design para habilitar o Snowflake e outras fontes de dados heterogêneas. Se preferir, outra abordagem é usar o comando Snowflake COPY e a integração de armazenamento para gravar os resultados da consulta no Amazon S3.

Independentemente do mecanismo de transporte usado, agora descrevemos o tipo de dados que a Previsão precisa e como os dados são definidos, preparados e extraídos. Na seção a seguir, descrevemos como importar dados para o Forecast.

A captura de tela a seguir mostra a aparência de um conjunto de dados em seu esquema Snowflake nativo.

Automatize sua previsão de série temporal no Snowflake usando o Amazon Forecast PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Embora esta captura de tela mostre a aparência dos dados em seu estado natural, o Forecast exige que os dados sejam moldados em três conjuntos de dados diferentes:

  • Série temporal de destino – Este é um conjunto de dados obrigatório que contém a variável de destino e é usado para treinar e prever um valor futuro. Sozinho, esse conjunto de dados serve como um modelo de série temporal univariada.
  • Série temporal relacionada – Este é um conjunto de dados opcional que contém variáveis ​​temporais que devem ter um relacionamento com a variável de destino. Os exemplos incluem preços variáveis, esforços promocionais, tráfego de eventos hiperlocal, dados de perspectivas econômicas — qualquer coisa que você ache que pode ajudar a explicar a variação na série temporal de destino e produzir uma previsão melhor. O conjunto de dados de série temporal relacionado transforma seu modelo univariado em um multivariado para ajudar a melhorar a precisão.
  • Metadados do item – Este é um conjunto de dados opcional contendo dados categóricos sobre o item previsto. Os metadados do item geralmente ajudam a aumentar o desempenho de produtos recém-lançados, que chamamos de começo frio.

Com o escopo de cada um dos conjuntos de dados do Forecast definido, você pode escrever consultas no Snowflake que originam os campos de dados corretos das tabelas de origem necessárias com os filtros adequados para obter o subconjunto de dados desejado. A seguir estão três exemplos de consultas SQL usadas para gerar cada conjunto de dados que o Forecast precisa para um cenário de planejamento de demanda de alimentos específico.

Começamos com a consulta de série temporal de destino:

select LOCATION_ID, ITEM_ID, 
DATE_DEMAND as TIMESTAMP, QTY_DEMAND as TARGET_VALUE 
from DEMO.FOOD_DEMAND

A consulta de série temporal relacionada opcional extrai covariáveis, como preço e promoção:

select LOCATION_ID,ITEM_ID, DATE_DEMAND as TIMESTAMP,
CHECKOUT_PRICE, BASE_PRICE,
EMAILER_FOR_PROMOTION, HOMEPAGE_FEATURED
from DEMO.FOOD_DEMAND

A consulta de metadados do item busca valores categóricos distintos que ajudam a dar dimensão e definir melhor o item previsto:

select DISTINCT ITEM_ID, FOOD_CATEGORY, FOOD_CUISINE
from DEMO.FOOD_DEMAND

Com as consultas de origem definidas, podemos nos conectar ao Snowflake por meio de uma consulta federada do Athena para enviar as consultas e persistir os conjuntos de dados resultantes para uso de previsão. Para obter mais informações, consulte Consulte Snowflake usando Athena Federated Query e junte-se aos dados em seu data lake Amazon S3.

A Repositório do GitHub do Athena Snowflake Connector ajuda a instalar o conector Snowflake. o Previsão de repositório GitHub de MLOps ajuda a orquestrar todas as etapas de macro definidas nesta postagem e as torna repetíveis sem escrever código.

Importar dados para o Forecast

Após concluirmos a etapa anterior, um conjunto de dados de série temporal de destino estará no Amazon S3 e pronto para importação no Forecast. Além disso, os conjuntos de dados de metadados de itens e séries temporais relacionados opcionais também podem ser preparados e prontos para ingestão. Com o fornecido Solução de previsão de MLOps, tudo o que você precisa fazer aqui é iniciar a máquina de estado do Step Functions responsável pela importação de dados — nenhum código é necessário. O Forecast inicia um cluster para cada um dos conjuntos de dados que você forneceu e deixa os dados prontos para o serviço usar para construção de modelo de ML e inferência de modelo.

Crie um modelo de ML de série temporal com estatísticas de precisão

Depois que os dados são importados, modelos de séries temporais altamente precisos são criados simplesmente chamando uma API. Essa etapa é encapsulada em uma máquina de estado do Step Functions que inicia a API de previsão para iniciar o treinamento do modelo. Depois que o modelo de previsão é treinado, a máquina de estado exporta as estatísticas e previsões do modelo durante a janela de backtest para o Amazon S3. As exportações de backtest podem ser consultadas pelo Snowflake como um estágio externo, conforme mostrado na captura de tela a seguir. Se preferir, você pode armazenar os dados em um estágio interno. O objetivo é usar as métricas de backtest para avaliar a dispersão de desempenho das séries temporais em seu conjunto de dados fornecido.

Automatize sua previsão de série temporal no Snowflake usando o Amazon Forecast PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Crie previsões futuras

Com o modelo treinado na etapa anterior, uma máquina de estado do Step Functions criada especificamente chama a API de previsão para criar previsões com data futura. A previsão provisiona um cluster para realizar a inferência e extrai as séries temporais de destino importadas, séries temporais relacionadas e conjuntos de dados de metadados de itens por meio de um modelo de previsão nomeado criado na etapa anterior. Depois que as previsões são geradas, a máquina de estado as grava no Amazon S3, onde, mais uma vez, elas podem ser consultadas no local como um estágio externo do Snowflake ou movidas para o Snowflake como um estágio interno.

Use os dados de previsão com data futura diretamente no Snowflake

A AWS não criou uma solução totalmente automatizada para esta etapa; no entanto, com a solução deste post, os dados já foram produzidos pelo Forecast nas duas etapas anteriores. Você pode tratar as saídas como eventos acionáveis ​​ou criar painéis de inteligência de negócios nos dados. Você também pode usar os dados para criar planos de fabricação e pedidos de compra futuros, estimar receitas futuras, criar planos de recursos de pessoal e muito mais. Cada caso de uso é diferente, mas o objetivo desta etapa é entregar as previsões aos sistemas de consumo corretos em sua organização ou além.

O trecho de código a seguir mostra como consultar dados do Amazon S3 diretamente do Snowflake:

CREATE or REPLACE FILE FORMAT mycsvformat
type = 'CSV'
field_delimiter = ','
empty_field_as_null = TRUE
ESCAPE_UNENCLOSED_FIELD = None
skip_header = 1;

CREATE or REPLACE STORAGE INTEGRATION amazon_forecast_integration
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = S3
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::nnnnnnnnnn:role/snowflake-forecast-poc-role'
ENABLED = true
STORAGE_ALLOWED_LOCATIONS = (
's3://bucket/folder/forecast',
's3://bucket/folder/backtest-export/accuracy-metrics-values',
's3://bucket/folder/backtest-export/forecasted-values';

CREATE or REPLACE STAGE backtest_accuracy_metrics
storage_integration = amazon_forecast_integration
url = 's3://bucket/folder/backtest-export/accuracy-metrics-values'
file_format = mycsvformat;

CREATE or REPLACE EXTERNAL TABLE FOOD_DEMAND_BACKTEST_ACCURACY_METRICS (
ITEM_ID varchar AS (value:c1::varchar),
LOCATION_ID varchar AS (value:c2::varchar),
backtest_window varchar AS (value:c3::varchar),
backtestwindow_start_time varchar AS (value:c4::varchar),
backtestwindow_end_time varchar AS (value:c5::varchar),
wQL_10 varchar AS (value:c6::varchar),
wQL_30 varchar AS (value:c7::varchar),
wQL_50 varchar AS (value:c8::varchar),
wQL_70 varchar AS (value:c9::varchar),
wQL_90 varchar AS (value:c10::varchar),
AVG_wQL varchar AS (value:c11::varchar),
RMSE varchar AS (value:c12::varchar),
WAPE varchar AS (value:c13::varchar),
MAPE varchar AS (value:c14::varchar),
MASE varchar AS (value:c15::varchar)
)
with location = @backtest_accuracy_metrics
FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = ',' SKIP_HEADER = 1);

Para obter mais informações sobre como configurar permissões, consulte Opção 1: configurar uma integração de armazenamento Snowflake para acessar o Amazon S3. Além disso, você pode usar o Catálogo de serviços da AWS configurar a integração de armazenamento do Amazon S3; mais informações estão disponíveis no GitHub repo.

Iniciar um fluxo de trabalho baseado em agendamento ou evento

Depois de instalar uma solução para sua carga de trabalho específica, sua etapa final é automatizar o processo em uma programação que faça sentido para seu requisito exclusivo, como diário ou semanal. O principal é decidir como iniciar o processo. Um método é usar o Snowflake para invocar a máquina de estado do Step Functions e, em seguida, orquestrar as etapas em série. Outra abordagem é encadear máquinas de estado e iniciar a execução geral por meio de um Amazon Event Bridge regra, que você pode configurar para ser executado a partir de um evento ou tarefa agendada, por exemplo, às 9:00 GMT-8 todos os domingos à noite.

Conclusão

Com mais experiência; a nuvem mais confiável, escalável e segura; e o conjunto mais abrangente de serviços e soluções, a AWS é o melhor lugar para extrair valor de seus dados e transformá-los em insights. Neste post, mostramos como criar um fluxo de trabalho automatizado de previsão de séries temporais. Uma melhor previsão pode levar a melhores resultados de atendimento ao cliente, menos desperdício, menos estoque ocioso e mais dinheiro no balanço.

Se você estiver pronto para automatizar e melhorar a previsão, estamos aqui para ajudá-lo em sua jornada. Entre em contato com sua equipe de contas da AWS ou Snowflake para começar hoje mesmo e peça um workshop de previsão para ver que tipo de valor você pode obter de seus dados.


Sobre os autores

Automatize sua previsão de série temporal no Snowflake usando o Amazon Forecast PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.bosco albuquerque é arquiteto de soluções de parceiros sênior na AWS e tem mais de 20 anos de experiência trabalhando com produtos de banco de dados e análises de fornecedores de banco de dados corporativos e provedores de nuvem. Ele ajudou empresas de tecnologia a projetar e implementar soluções e produtos de análise de dados.

Automatize sua previsão de série temporal no Snowflake usando o Amazon Forecast PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Frank Dallezotte é arquiteto de soluções sênior na AWS e tem paixão por trabalhar com fornecedores de software independentes para projetar e criar aplicativos escaláveis ​​na AWS. Ele tem experiência na criação de software, na implementação de pipelines de compilação e na implantação dessas soluções na nuvem.

Automatize sua previsão de série temporal no Snowflake usando o Amazon Forecast PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Andries Engelbrecht é arquiteto de soluções de parceiro principal da Snowflake e trabalha com parceiros estratégicos. Ele está ativamente envolvido com parceiros estratégicos, como a AWS, apoiando integrações de produtos e serviços, bem como no desenvolvimento de soluções conjuntas com parceiros. Andries tem mais de 20 anos de experiência na área de dados e análises.

Automatize sua previsão de série temporal no Snowflake usando o Amazon Forecast PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Charles Laughlin é arquiteto de soluções especialista em IA/ML e trabalha na equipe de ML da série temporal na AWS. Ele ajuda a moldar o roteiro do serviço Amazon Forecast e colabora diariamente com diversos clientes da AWS para ajudar a transformar seus negócios usando tecnologias de ponta da AWS e liderança de pensamento. Charles possui mestrado em gerenciamento da cadeia de suprimentos e passou a última década trabalhando no setor de bens de consumo embalados.

Automatize sua previsão de série temporal no Snowflake usando o Amazon Forecast PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.James Sol é arquiteto de soluções de parceiro sênior da Snowflake. James tem mais de 20 anos de experiência em armazenamento e análise de dados. Antes da Snowflake, ele ocupou vários cargos técnicos seniores na AWS e MapR. James é PhD pela Universidade de Stanford.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS