Zephyrnet-logo

Automatiseer uw tijdreeksprognoses in Snowflake met Amazon Forecast

Datum:

Dit bericht is een samenwerking met Andries Engelbrecht en James Sun van Snowflake, Inc.

De cloud computing-revolutie heeft bedrijven in staat gesteld om bedrijfs- en organisatiegegevens vast te leggen en te bewaren zonder beperkingen op het gebied van capaciteitsplanning of gegevensretentie. Nu, met diverse en enorme reserves aan longitudinale gegevens, zijn bedrijven steeds beter in staat om nieuwe en impactvolle manieren te vinden om hun digitale activa te gebruiken om betere en weloverwogen beslissingen te nemen bij het nemen van planningsbeslissingen op korte en lange termijn. Tijdreeksvoorspelling is een unieke en essentiële wetenschap die bedrijven in staat stelt om chirurgische planningsbeslissingen te nemen om de klantenservice te helpen balanceren met vaak concurrerende doelen van optimale winstgevendheid.

Bij AWS werken we soms met klanten die onze technologiepartner hebben gekozen Sneeuwvlok om een ​​cloud-dataplatformervaring te leveren. Een platform hebben dat zich jaren en jaren aan historische gegevens kan herinneren is krachtig, maar hoe kunt u deze gegevens gebruiken om vooruit te kijken en het bewijs van gisteren te gebruiken om plannen te maken voor morgen? Stelt u zich eens voor dat niet alleen wat er is gebeurd beschikbaar is in Snowflake - uw enige versie van de waarheid - maar ook een aangrenzende reeks niet-silogegevens die een probabilistische voorspelling bieden voor dagen, weken of maanden in de toekomst.

In een gezamenlijke toeleveringsketen kan het delen van informatie tussen partners de prestaties verbeteren, het concurrentievermogen vergroten en verspilling van middelen verminderen. Het delen van uw toekomstige prognoses kan worden vergemakkelijkt met Snowflake-gegevens delen, waarmee u naadloos veilig kunt samenwerken met uw zakenpartners en zakelijke inzichten kunt identificeren. Als veel partners hun prognoses delen, kan dit helpen het bullwhip-effect in de aangesloten supply chain te beheersen. U kunt effectief gebruik maken van Sneeuwvlok Marktplaats om geld te verdienen met uw voorspellende analyses van datasets die zijn geproduceerd in Amazon voorspelling.

In dit bericht bespreken we hoe u een geautomatiseerde oplossing voor het voorspellen van tijdreeksen kunt implementeren met behulp van Snowflake en Forecast.

Essentiële AWS-services die deze oplossing mogelijk maken

Forecast biedt verschillende state-of-the-art tijdreeksalgoritmen en beheert de toewijzing van voldoende gedistribueerde rekencapaciteit om aan de behoeften van bijna elke werklast te voldoen. Met Forecast krijg je niet één model; je krijgt de kracht van veel modellen die verder zijn geoptimaliseerd tot een uniek gewogen model voor elke tijdreeks in de set. Kortom, de service levert alle wetenschap, gegevensverwerking en resourcebeheer in een eenvoudige API-aanroep.

AWS Stap Functies biedt een procesorkestratiemechanisme dat de algehele workflow beheert. De service kapselt API-aanroepen in met: Amazone Athene, AWS Lambda, en Forecast om een ​​geautomatiseerde oplossing te creëren die gegevens van Snowflake verzamelt, Forecast gebruikt om historische gegevens om te zetten in toekomstige voorspellingen en vervolgens de gegevens in Snowflake maakt.

Athena federatieve query's kunnen verbinding maken met verschillende bedrijfsgegevensbronnen, waaronder: Amazon DynamoDB, Amazon roodverschuiving, Amazon OpenSearch-service, MySQL, PostgreSQL, Redis en andere populaire datastores van derden, zoals Snowflake. Gegevensconnectoren worden uitgevoerd als Lambda-functies - u kunt deze broncode gebruiken om de Amazon Athena Lambda Snowflake-connector en maak verbinding met AWS PrivéLink of via een NAT-gateway.

Overzicht oplossingen

Een van de dingen die we bij AWS vaak doen, is klanten helpen hun doelen te realiseren en tegelijkertijd de last van het ongedifferentieerde zware werk wegnemen. Met dit in gedachten stellen we het volgende voor: oplossing om AWS- en Snowflake-klanten te helpen de volgende stappen uit te voeren:

  1. Gegevens exporteren vanuit Snowflake. U kunt flexibele metadata gebruiken om de benodigde historische gegevens te ontladen, aangedreven door een kant-en-klare workflow.
  2. Gegevens importeren in Prognose. Ongeacht het gebruik, de branche of de schaal, het importeren van voorbereide gegevensinvoer is eenvoudig en geautomatiseerd.
  3. Train een state-of-the-art tijdreeksmodel. U kunt de prognose van tijdreeksen automatiseren zonder de onderliggende datawetenschap of hardwarevoorziening te beheren.
  4. Genereer gevolgtrekking tegen het getrainde model. Prognose-geproduceerde outputs zijn gemakkelijk te consumeren voor elk doel. Ze zijn beschikbaar als eenvoudige CSV- of Parquet-bestanden op Amazon eenvoudige opslagservice (Amazone S3).
  5. Gebruik geschiedenis en toekomstvoorspellingen direct naast elkaar in Snowflake.

Het volgende diagram illustreert hoe een geautomatiseerde workflow kan worden geïmplementeerd waarmee Snowflake-klanten kunnen profiteren van zeer nauwkeurige tijdreeksvoorspellingen die worden ondersteund door Forecast, een door AWS beheerde service. Het hier aangeboden ontwerp overstijgt de use-case en de industrie en haalt eerst historische gegevens uit Snowflake. Vervolgens dient de werkstroom de voorbereide gegevens in voor tijdreeksberekening. Ten slotte zijn voorspellingen voor de toekomstige periode standaard beschikbaar in Snowflake, waardoor een naadloze gebruikerservaring ontstaat voor gezamenlijke AWS- en Snowflake-klanten.

Hoewel deze architectuur alleen de belangrijkste technische details benadrukt, is de oplossing eenvoudig samen te stellen, soms binnen 1-2 werkdagen. We bieden u werkende voorbeeldcode om het ongedifferentieerde zware werk van het creëren van de oplossing alleen en zonder voorsprong te helpen verwijderen. Nadat u hebt ontdekt hoe u dit patroon voor één werkbelasting kunt implementeren, kunt u het prognoseproces herhalen voor alle gegevens in Snowflake. In de volgende secties schetsen we de belangrijkste stappen waarmee u een geautomatiseerde pijplijn kunt bouwen.

Haal historische gegevens uit Snowflake

In deze eerste stap gebruikt u SQL om te definiëren welke gegevens u wilt voorspellen en laat u een Athena Federated Query verbinding maken met Snowflake, uw aangepaste SQL uitvoeren en de resulterende recordset op Amazon S3 behouden. Forecast vereist dat historische trainingsgegevens beschikbaar zijn op Amazon S3 voordat ze worden ingenomen; daarom dient Amazon S3 als een tussentijdse opslagbuffer tussen Snowflake en Forecast. We gebruiken Athena in dit ontwerp om Snowflake en andere heterogene gegevensbronnen mogelijk te maken. Als u wilt, is een andere benadering het gebruik van de opdracht Snowflake COPY en opslagintegratie om queryresultaten naar Amazon S3 te schrijven.

Ongeacht het gebruikte transportmechanisme, schetsen we nu het soort gegevens dat nodig is voor prognoses en hoe gegevens worden gedefinieerd, voorbereid en geëxtraheerd. In het volgende gedeelte beschrijven we hoe u gegevens in Forecast kunt importeren.

De volgende schermafbeelding laat zien hoe een set gegevens eruit zou kunnen zien in het oorspronkelijke Snowflake-schema.

Hoewel deze schermafbeelding laat zien hoe de gegevens er in hun natuurlijke staat uitzien, vereist Forecast dat gegevens worden gevormd in drie verschillende gegevenssets:

  • Doeltijdreeks – Dit is een vereiste dataset met de doelvariabele en wordt gebruikt om een ​​toekomstige waarde te trainen en te voorspellen. Alleen al deze dataset dient als een univariaat tijdreeksmodel.
  • Gerelateerde tijdreeksen – Dit is een optionele dataset die temporele variabelen bevat die een relatie moeten hebben met de doelvariabele. Voorbeelden zijn variabele prijzen, promotie-inspanningen, hyperlokaal evenementverkeer, gegevens over economische vooruitzichten - alles wat u denkt, kan de variantie in de beoogde tijdreeksen helpen verklaren en een betere voorspelling produceren. De gerelateerde tijdreeksgegevensset verandert uw univariate model in een multivariate om de nauwkeurigheid te helpen verbeteren.
  • Metagegevens van item – Dit is een optionele dataset met categorische gegevens over het voorspelde item. Metagegevens van artikelen helpen vaak de prestaties van nieuw gelanceerde producten te verbeteren, wat we een koude start.

Met het bereik van elk van de gedefinieerde Forecast-gegevenssets, kunt u query's schrijven in Snowflake die de juiste gegevensvelden uit de benodigde brontabellen halen met de juiste filters om de gewenste subset van gegevens te krijgen. Hieronder volgen drie voorbeelden van SQL-query's die worden gebruikt om elke gegevensset te genereren die Forecast nodig heeft voor een specifiek scenario voor de planning van de voedselvraag.

We beginnen met de doeltijdreeksquery:

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

De optionele gerelateerde tijdreeksquery haalt covariaten op, zoals prijs en promotie:

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

De itemmetadataquery haalt verschillende categorische waarden op die helpen om een ​​dimensie te geven en het voorspelde item verder te definiëren:

select DISTINCT ITEM_ID, FOOD_CATEGORY, FOOD_CUISINE
from DEMO.FOOD_DEMAND

Met de gedefinieerde bronquery's kunnen we verbinding maken met Snowflake via een Athena Federated Query om de query's in te dienen en de resulterende datasets voor prognosegebruik te behouden. Voor meer informatie, zie: Query Snowflake met Athena Federated Query en samen met gegevens in uw Amazon S3-data lake.

De Athena Snowflake Connector GitHub-opslagplaats helpt bij het installeren van de Snowflake-connector. De Voorspelling van MLOps GitHub-opslagplaats helpt bij het orkestreren van alle macrostappen die in dit bericht zijn gedefinieerd en maakt ze herhaalbaar zonder code te schrijven.

Gegevens importeren in Prognose

Nadat we de vorige stap hebben voltooid, bevindt een doeltijdreeksgegevensset zich in Amazon S3 en is klaar voor import in Forecast. Daarnaast kunnen de optionele gerelateerde tijdreeksen en item-metadata-datasets ook worden voorbereid en klaar voor opname. Met de meegeleverde Prognose MLOps-oplossing, het enige dat u hier hoeft te doen, is de Step Functions-statusmachine starten die verantwoordelijk is voor het importeren van gegevens - er is geen code nodig. Forecast lanceert een cluster voor elk van de gegevenssets die u hebt verstrekt en maakt de gegevens gereed voor gebruik door de service voor ML-modelbouw en modelinferentie.

Maak een tijdreeks-ML-model met nauwkeurigheidsstatistieken

Nadat gegevens zijn geïmporteerd, worden zeer nauwkeurige tijdreeksmodellen gemaakt door eenvoudigweg een API aan te roepen. Deze stap is ingekapseld in een Step Functions-statusmachine die de Forecast-API initieert om de modeltraining te starten. Nadat het voorspellermodel is getraind, exporteert de toestandsmachine de modelstatistieken en voorspellingen tijdens het backtestvenster naar Amazon S3. Backtest-exports kunnen door Snowflake worden opgevraagd als een externe fase, zoals weergegeven in de volgende schermafbeelding. Als u wilt, kunt u de gegevens in een intern stadium opslaan. Het punt is om de backtest-statistieken te gebruiken om de prestatiespreiding van tijdreeksen in uw verstrekte gegevensset te evalueren.

Toekomstvoorspellingen maken

Met het model dat uit de vorige stap is getraind, roept een speciaal gebouwde Step Functions-statusmachine de Forecast-API aan om toekomstgerichte prognoses te maken. Prognose voorziet een cluster om de gevolgtrekking uit te voeren en haalt de geïmporteerde doeltijdreeksen, gerelateerde tijdreeksen en itemmetagegevensgegevenssets via een benoemd voorspellermodel dat in de vorige stap is gemaakt. Nadat de voorspellingen zijn gegenereerd, schrijft de staatsmachine ze naar Amazon S3, waar ze opnieuw op hun plaats kunnen worden opgevraagd als een externe sneeuwvlok of verplaatst naar een sneeuwvlok als een interne fase.

Gebruik de toekomstgerichte voorspellingsgegevens rechtstreeks in Snowflake

AWS heeft voor deze stap geen volledig geautomatiseerde oplossing gebouwd; met de oplossing in dit bericht werden echter al gegevens geproduceerd door Forecast in de vorige twee stappen. U kunt de output behandelen als actiegerichte gebeurtenissen of business intelligence-dashboards bouwen op basis van de gegevens. U kunt de gegevens ook gebruiken om toekomstige productieplannen en inkooporders te maken, toekomstige inkomsten te schatten, personeelsplannen op te stellen en meer. Elke use case is anders, maar het doel van deze stap is om de voorspellingen te leveren aan de juiste verbruikende systemen in uw organisatie of daarbuiten.

Het volgende codefragment laat zien hoe u Amazon S3-gegevens rechtstreeks vanuit Snowflake kunt opvragen:

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);

Raadpleeg voor meer informatie over het instellen van machtigingen: Optie 1: een integratie van sneeuwvlokopslag configureren om toegang te krijgen tot Amazon S3. Daarnaast kunt u de AWS-servicecatalogus om Amazon S3-opslagintegratie te configureren; meer informatie is beschikbaar op de GitHub repo.

Een op schema's of gebeurtenissen gebaseerde workflow starten

Nadat u een oplossing voor uw specifieke werklast hebt geïnstalleerd, is uw laatste stap om het proces te automatiseren volgens een schema dat logisch is voor uw unieke behoefte, zoals dagelijks of wekelijks. Het belangrijkste is om te beslissen hoe het proces te starten. Een methode is om Snowflake te gebruiken om de Step Functions-statusmachine aan te roepen en vervolgens de stappen serieel te orkestreren. Een andere benadering is om state-machines aan elkaar te koppelen en de algehele run door een Amazon EventBridge regel, die u kunt configureren om te worden uitgevoerd vanaf een gebeurtenis of geplande taak, bijvoorbeeld elke zondagavond om 9:00 GMT-8.

Conclusie

Met de meeste ervaring; de meest betrouwbare, schaalbare en veilige cloud; en de meest uitgebreide reeks services en oplossingen, is AWS de beste plek om waarde uit uw gegevens te halen en om te zetten in inzicht. In dit bericht hebben we u laten zien hoe u een geautomatiseerde workflow voor tijdreeksprognoses kunt maken. Betere prognoses kunnen leiden tot hogere klantenservice-resultaten, minder verspilling, minder inactieve voorraad en meer geld op de balans.

Als u klaar bent om prognoses te automatiseren en te verbeteren, zijn we er om u te helpen tijdens uw reis. Neem contact op met uw AWS- of Snowflake-accountteam om vandaag nog aan de slag te gaan en vraag om een ​​voorspellingsworkshop om te zien welke waarde u uit uw gegevens kunt halen.


Over de auteurs

Bosco Albuquerque is een Sr. Partner Solutions Architect bij AWS en heeft meer dan 20 jaar ervaring in het werken met database- en analyseproducten van leveranciers van bedrijfsdatabases en cloudproviders. Hij heeft technologiebedrijven geholpen bij het ontwerpen en implementeren van oplossingen en producten voor data-analyse.

Frank Dalzotte is een Sr. Solutions Architect bij AWS en heeft een passie voor het werken met onafhankelijke softwareleveranciers om schaalbare applicaties op AWS te ontwerpen en te bouwen. Hij heeft ervaring met het maken van software, het implementeren van build-pipelines en het implementeren van deze oplossingen in de cloud.

Andries Engelbrecht is Principal Partner Solutions Architect bij Snowflake en werkt samen met strategische partners. Hij is actief betrokken bij strategische partners zoals AWS die product- en service-integraties ondersteunen, evenals de ontwikkeling van gezamenlijke oplossingen met partners. Andries heeft meer dan 20 jaar ervaring op het gebied van data en analytics.

Charles Lachlin is een Principal AI/ML Specialist Solutions Architect en werkt in het Time Series ML-team bij AWS. Hij helpt bij het vormgeven van de Amazon Forecast-serviceroadmap en werkt dagelijks samen met diverse AWS-klanten om hun bedrijf te helpen transformeren met behulp van geavanceerde AWS-technologieën en thought leadership. Charles heeft een MS in Supply Chain Management en heeft de afgelopen tien jaar in de sector van verpakte consumentengoederen gewerkt.

James Zon is Senior Partner Solutions Architect bij Snowflake. James heeft meer dan 20 jaar ervaring in opslag en data-analyse. Voordat hij bij Snowflake kwam, bekleedde hij verschillende senior technische functies bij AWS en MapR. James is gepromoveerd aan de Stanford University.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?