Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast

Det här inlägget är ett gemensamt samarbete med Andries Engelbrecht och James Sun från Snowflake, Inc.

Cloud computing-revolutionen har gjort det möjligt för företag att fånga och behålla företags- och organisationsdata utan kapacitetsplanering eller datalagringsbegränsningar. Nu, med olika och stora reserver av longitudinell data, kan företag i allt högre grad hitta nya och effektfulla sätt att använda sina digitala tillgångar för att fatta bättre och informerade beslut när de fattar kortsiktiga och långsiktiga planeringsbeslut. Tidsserieprognoser är en unik och viktig vetenskap som gör det möjligt för företag att fatta kirurgiska planeringsbeslut för att balansera kundservicenivåer mot ofta konkurrerande mål om optimal lönsamhet.

På AWS arbetar vi ibland med kunder som valt vår teknikpartner Snöflinga att leverera en molndataplattformsupplevelse. Att ha en plattform som kan återkalla år och år av historisk data är kraftfullt – men hur kan du använda dessa data för att se framåt och använda gårdagens bevis för att planera för morgondagen? Föreställ dig att inte bara ha det som har hänt tillgängligt i Snowflake – din enda version av sanningen – utan också en intilliggande uppsättning icke-siloförsedda data som erbjuder en probabilistisk prognos för dagar, veckor eller månader in i framtiden.

I en samarbetsförsörjningskedja kan informationsdelning mellan partners förbättra prestanda, öka konkurrenskraften och minska slöseri med resurser. Att dela dina framtida prognoser kan underlättas med Snöflinga datadelning, vilket gör det möjligt för dig att sömlöst samarbeta med dina affärspartners på ett säkert sätt och identifiera affärsinsikter. Om många partners delar med sig av sina prognoser kan det hjälpa till att kontrollera bullwhip-effekten i den uppkopplade leveranskedjan. Du kan effektivt använda Snowflake Marketplace för att tjäna pengar på din prediktiva analys från datauppsättningar som produceras i Amazon Prognos.

I det här inlägget diskuterar vi hur man implementerar en automatiserad tidsserieprognoslösning med Snowflake och Forecast.

Viktiga AWS-tjänster som möjliggör denna lösning

Forecast tillhandahåller flera toppmoderna tidsseriealgoritmer och hanterar allokeringen av tillräckligt med distribuerad datorkapacitet för att möta behoven hos nästan vilken arbetsbelastning som helst. Med Forecast får du inte en modell; du får styrkan hos många modeller som är ytterligare optimerade till en unikt viktad modell för varje tidsserie i setet. Kort sagt, tjänsten levererar all vetenskap, datahantering och resurshantering i ett enkelt API-anrop.

AWS stegfunktioner tillhandahåller en processorkestreringsmekanism som hanterar det övergripande arbetsflödet. Tjänsten kapslar in API-anrop med Amazonas Athena, AWS Lambda, och Forecast för att skapa en automatiserad lösning som samlar in data från Snowflake, använder Forecast för att konvertera historisk data till framtida förutsägelser och sedan skapar data inuti Snowflake.

Athena federerade frågor kan ansluta till flera företagsdatakällor, inklusive Amazon DynamoDB, Amazon RedShift, Amazon OpenSearch Service, MySQL, PostgreSQL, Redis och andra populära databutiker från tredje part, som Snowflake. Dataanslutningar körs som Lambda-funktioner – du kan använda den här källkoden för att starta Amazon Athena Lambda Snowflake Connector och anslut med AWS PrivateLink eller genom en NAT Gateway.

Lösningsöversikt

En av de saker vi ofta gör på AWS är att arbeta för att hjälpa kunder att förverkliga sina mål samtidigt som de tar bort bördan av de odifferentierade tunga lyften. Med detta i åtanke föreslår vi följande lösning för att hjälpa AWS- och Snowflake-kunder att utföra följande steg:

  1. Exportera data från Snowflake. Du kan använda flexibel metadata för att ladda ner nödvändig historisk data som drivs av ett färdigt arbetsflöde.
  2. Importera data till Forecast. Oavsett användningsfall, bransch eller skala är det enkelt och automatiserat att importera förberedda datainmatningar.
  3. Träna en toppmodern tidsseriemodell. Du kan automatisera tidsserieprognoser utan att hantera den underliggande datavetenskapen eller maskinvaruförsörjningen.
  4. Generera slutsatser mot den tränade modellen. Prognosproducerade utdata är lätta att konsumera för alla ändamål. De är tillgängliga som enkla CSV- eller Parkettfiler på Amazon enkel lagringstjänst (Amazon S3).
  5. Använd historik och framtida förutsägelser sida vid sida direkt i Snowflake.

Följande diagram illustrerar hur man implementerar ett automatiserat arbetsflöde som gör att Snowflake-kunder kan dra nytta av mycket exakta tidsserieförutsägelser som stöds av Forecast, en AWS-hanterad tjänst. Designen som erbjuds här överskrider användningsfall och bransch, och extraherar först historiska data från Snowflake. Därefter skickar arbetsflödet de förberedda data för tidsserieberäkning. Slutligen är framtida periodförutsägelser tillgängliga i Snowflake, vilket skapar en sömlös användarupplevelse för gemensamma AWS- och Snowflake-kunder.

Även om denna arkitektur bara lyfter fram de viktigaste tekniska detaljerna är lösningen enkel att sätta ihop, ibland inom 1–2 arbetsdagar. Vi förser dig med fungerande exempelkod för att ta bort de odifferentierade tunga lyften av att skapa lösningen ensam och utan försprång. När du har upptäckt hur du implementerar det här mönstret för en arbetsbelastning kan du upprepa prognostiseringsprocessen för all data som finns i Snowflake. I avsnitten som följer beskriver vi de viktigaste stegen som gör att du kan bygga en automatiserad pipeline.

Extrahera historiska data från Snowflake

I det här första steget använder du SQL för att definiera vilken data du vill ha prognostiserat och låter en Athena Federated Query ansluta till Snowflake, köra din anpassade SQL och bevara den resulterande posten på Amazon S3. Prognos kräver att historisk träningsdata är tillgänglig på Amazon S3 före intag; därför fungerar Amazon S3 som en mellanlagringsbuffert mellan Snowflake och Forecast. Vi har Athena i denna design för att möjliggöra Snowflake och andra heterogena datakällor. Om du föredrar, är ett annat tillvägagångssätt att använda kommandot Snowflake COPY och lagringsintegration för att skriva frågeresultat till Amazon S3.

Oavsett vilken transportmekanism som används, beskriver vi nu vilken typ av data som prognosen behöver och hur data definieras, förbereds och extraheras. I avsnittet som följer beskriver vi hur du importerar data till Forecast.

Följande skärmdump visar hur en uppsättning data kan se ut i dess ursprungliga Snowflake-schema.

Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Även om den här skärmdumpen visar hur data ser ut i sitt naturliga tillstånd, kräver Forecast att data formas till tre olika datamängder:

  • Måltidsserie – Detta är en obligatorisk datauppsättning som innehåller målvariabeln och används för att träna och förutsäga ett framtida värde. Ensam fungerar denna datauppsättning som en univariat tidsseriemodell.
  • Relaterad tidsserie – Detta är en valfri datauppsättning som innehåller tidsvariabler som bör ha en relation till målvariabeln. Exempel inkluderar rörlig prissättning, marknadsföringsinsatser, hyperlokal händelsetrafik, ekonomiska utsikter – allt du känner kan hjälpa till att förklara variansen i måltidsserien och producera en bättre prognos. Den relaterade tidsserieuppsättningen förvandlar din univariata modell till en multivariat för att förbättra noggrannheten.
  • Objektmetadata – Detta är en valfri datauppsättning som innehåller kategorisk data om det prognostiserade objektet. Artikelmetadata hjälper ofta till att öka prestandan för nylanserade produkter, som vi kallar en kall start.

Med omfattningen av var och en av prognosdatauppsättningarna definierade kan du skriva frågor i Snowflake som hämtar de korrekta datafälten från de nödvändiga källtabellerna med rätt filter för att få önskad delmängd av data. Följande är tre exempel på SQL-frågor som används för att generera varje datauppsättning som Forecast behöver för ett specifikt scenario för planering av matefterfrågan.

Vi börjar med måltidsseriefrågan:

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

Den valfria relaterade tidsseriefrågan drar kovariater som pris och kampanj:

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

Objektmetadatafrågan hämtar distinkta kategorivärden som hjälper till att ge dimension och ytterligare definiera det prognostiserade objektet:

select DISTINCT ITEM_ID, FOOD_CATEGORY, FOOD_CUISINE
from DEMO.FOOD_DEMAND

Med källfrågorna definierade kan vi ansluta till Snowflake genom en Athena Federated Query för att skicka frågorna och bevara de resulterande datamängderna för användning i prognoser. För mer information, se Fråga Snowflake med Athena Federated Query och gå med data i din Amazon S3 -datasjö.

Smakämnen Athena Snowflake Connector GitHub repo hjälper till att installera Snowflake-kontakten. De Prognos MLOps GitHub repo hjälper till att orkestrera alla makrosteg som definieras i det här inlägget och gör dem repeterbara utan att skriva kod.

Importera data till Forecast

När vi har slutfört det föregående steget finns en måltidsseriedatauppsättning i Amazon S3 och redo för import till Forecast. Dessutom kan de valfria relaterade tidsserierna och metadatauppsättningarna för objekt också vara förberedda och redo för intag. Med det tillhandahållna Prognos MLOps lösning, allt du behöver göra här är att initiera tillståndsmaskinen för stegfunktioner som ansvarar för att importera data – ingen kod behövs. Forecast lanserar ett kluster för var och en av de datauppsättningar du har tillhandahållit och gör data redo för tjänsten att använda för ML-modellbyggnad och modellslutledning.

Skapa en tidsserie ML-modell med noggrannhetsstatistik

Efter att data har importerats skapas mycket exakta tidsseriemodeller helt enkelt genom att anropa ett API. Detta steg är inkapslat inuti en Step Functions-tillståndsmaskin som initierar Forecast API för att starta modellträning. Efter att prediktormodellen har tränats exporterar tillståndsmaskinen modellstatistiken och förutsägelserna under backtestfönstret till Amazon S3. Backtest-exporter kan förfrågas av Snowflake som ett externt steg, som visas i följande skärmdump. Om du föredrar det kan du lagra data i ett internt skede. Poängen är att använda backtest-måtten för att utvärdera prestandaspridningen av tidsserier i din datauppsättning.

Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Skapa framtida förutsägelser

Med modellen tränad från föregående steg anropar en specialbyggd Step Functions-tillståndsmaskin Forecast API för att skapa framtidsdaterade prognoser. Prognos tillhandahåller ett kluster för att utföra slutsatsen och drar de importerade måltidsserierna, relaterade tidsserier och objektmetadatauppsättningar genom en namngiven prediktormodell som skapades i föregående steg. Efter att förutsägelserna har genererats, skriver tillståndsmaskinen dem till Amazon S3, där de återigen kan frågas på plats som en Snowflake extern scen eller flyttas till Snowflake som en intern scen.

Använd framtidsdaterad förutsägelsedata direkt i Snowflake

AWS har inte byggt en helt automatiserad lösning för detta steg; Men med lösningen i det här inlägget producerades data redan av Forecast i de två föregående stegen. Du kan behandla utdata som handlingsbara händelser eller bygga business intelligence-instrumentpaneler på data. Du kan också använda data för att skapa framtida tillverkningsplaner och inköpsorder, uppskatta framtida intäkter, bygga personalresursplaner och mer. Varje användningsfall är olika, men poängen med det här steget är att leverera förutsägelserna till rätt konsumerande system i din organisation eller utanför.

Följande kodavsnitt visar hur man frågar Amazon S3-data direkt från 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);

För mer information om hur du ställer in behörigheter, se Alternativ 1: Konfigurera en Snowflake Storage Integration för att komma åt Amazon S3. Dessutom kan du använda AWS servicekatalog för att konfigurera Amazon S3-lagringsintegration; mer information finns på GitHub repo.

Initiera ett schemabaserat eller händelsebaserat arbetsflöde

När du har installerat en lösning för din specifika arbetsbelastning är ditt sista steg att automatisera processen enligt ett schema som är vettigt för ditt unika krav, till exempel dagligen eller veckovis. Det viktigaste är att bestämma hur processen ska startas. En metod är att använda Snowflake för att anropa tillståndsmaskinen Step Functions och sedan orkestrera stegen i serie. Ett annat tillvägagångssätt är att koppla samman tillståndsmaskiner och starta den övergripande körningen genom en Amazon EventBridge regel, som du kan konfigurera så att den körs från en händelse eller schemalagd uppgift – till exempel klockan 9:00 GMT-8 varje söndagskväll.

Slutsats

Med mest erfarenhet; det mest pålitliga, skalbara och säkra molnet; och den mest omfattande uppsättningen tjänster och lösningar, AWS är det bästa stället att låsa upp värde från din data och omvandla den till insikt. I det här inlägget visade vi dig hur du skapar ett automatiskt arbetsflöde för tidsserieprognoser. Bättre prognoser kan leda till högre kundserviceresultat, mindre avfall, mindre ledigt lager och mer kassa på balansräkningen.

Om du är redo att automatisera och förbättra prognoser finns vi här för att hjälpa dig på din resa. Kontakta ditt AWS- eller Snowflake-kontoteam för att komma igång idag och be om en prognosverkstad för att se vilken typ av värde du kan låsa upp från din data.


Om författarna

Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Bosco Albuquerque är Sr. Partner Solutions Architect på AWS och har över 20 års erfarenhet av att arbeta med databas- och analysprodukter från företagsdatabasleverantörer och molnleverantörer. Han har hjälpt teknikföretag att designa och implementera dataanalyslösningar och produkter.

Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Frank Dallezotte är Sr. Solutions Architect på AWS och brinner för att arbeta med oberoende mjukvaruleverantörer för att designa och bygga skalbara applikationer på AWS. Han har erfarenhet av att skapa mjukvara, implementera pipelines och distribuera dessa lösningar i molnet.

Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Andries Engelbrecht är Principal Partner Solutions Architect på Snowflake och arbetar med strategiska partners. Han är aktivt engagerad med strategiska partners som AWS som stödjer produkt- och tjänsteintegrationer samt utveckling av gemensamma lösningar med partners. Andries har över 20 års erfarenhet inom området data och analys.

Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Charles Laughlin är en Principal AI/ML Specialist Solutions Architect och arbetar i Time Series ML-teamet på AWS. Han hjälper till att forma Amazon Forecast-tjänstens färdplan och samarbetar dagligen med olika AWS-kunder för att hjälpa till att transformera deras företag med hjälp av avancerad AWS-teknik och tankeledarskap. Charles har en MS i Supply Chain Management och har under det senaste decenniet arbetat i industrin för konsumentförpackade varor.

Automatisera din tidsserieprognoser i Snowflake med Amazon Forecast PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.James Sun är Senior Partner Solutions Architect på Snowflake. James har över 20 års erfarenhet av lagring och dataanalys. Innan Snowflake hade han flera ledande tekniska befattningar på AWS och MapR. James har en doktorsexamen från Stanford University.

Tidsstämpel:

Mer från AWS maskininlärning