Stel, je werkt bij Bacardi en wilt graag weten hoeveel Bacardi Rum Superior je volgende maand gaat verkopen in Florida. Wat nu? Dan schakel je natuurlijk Magnus in! In dit blog vertelt Yvonne Haartsen het verschil tussen Time Series forecasten met SAP Analytics Cloud (SAC) en SAP HANA.
Forecasting tools
Er zijn verschillende manieren om deze forecast uit te voeren. In deze blog vergelijk ik de volgende twee:
- Time Series in SAP HANA
- Time Series in SAP Analytics Cloud (SAC)

Wat is het verschil? Volgens SAP gaat het vooral om de gebruiker. Een business user zal de voorkeur geven aan SAC; gebruiksvriendelijk, snel aan de slag, mooie plaatjes. Mocht je meer flexibiliteit en opties willen als developer, dan kun je de forecast met een Predictive Analaytics Library (PAL) functie in SAP HANA berekenen. Uiteindelijk runt alles ongeveer op hetzelfde maar dan anders verpakt:
Bron: sapinsider
Rechts de predictive analytics libraries van SAP HANA en links SAC dat, onder water, op één van deze libraries draait. In het midden is nog SAP Predictive Analytics te zien, deze software zit tussen SAC en SAP HANA in qua gebruiksgemak en flexibiliteit.
De data
Voor beide opties gebruik ik een onbewerkte, platte tabel als input. Deze tabel heeft als belangrijkste kolommen: Time, Planning Distributors: Code, Market en Act/Fcst $NSV. De data is geactualiseerd tot en met december, maar ik gebruik alles om toch twee jaar aan datapunten te hebben.
Alles in SAP HANA
Stap 1: Data laden
De platte tabel kan direct in de database geïmporteerd worden. CSV-files en Excel 97 worksheets werken het beste. Ik zet de data in een bestaande tabel in een Acquisitie Schema. Een schema is vergelijkbaar met een map, een subdatabase met zijn eigen tabellen, rechten etc.
Stap 2: Data prepareren
De data heeft nog niet review juiste format en de kolomnamen zijn complex. In deze stap transporteer ik de data naar een ander schema met behulp van een Flowgraph. Dit is een blokschema waar data doorheen gaat. Veel van de transformaties zou je ook kunnen programmeren, maar de Flowgraph maakt alles visueel en overzichtelijker. De Flowgraph begint met de databron. De kolommen worden door een filter gehaald waarin de tijd wordt gesplitst in jaar en maand. Verder worden de sales bedragen naar cijfers getransformeerd. In het LOOKUP-blok wordt er een tijdstabel gekoppeld aan de data. Hierdoor kan de datum als date type worden toegevoegd en worden de datums gekoppeld aan het fiscale jaar van Bacardi. Uiteindelijk wordt de data naar een nieuwe tabel verplaatst. Het resultaat kan bekeken worden in het Data Preview scherm.
Stap 3: Data prepareren voor PAL
De data is nu te gebruiken voor views, maar nog niet geschikt als input voor PALfuncties. De PAL functie die ik ga gebruiken heet Triple Exponential Smoothing. Deze functie is namelijk ook beschikbaar in SAC en houdt rekening met seasonality.
Hoe de data geprepareerd moet worden ligt aan de functie. In de nieuwste manual: is te vinden aan welke eisen de input moet voldoen en welke parameters er zijn.
Het prepareren van de data en uitvoeren van de PAL functie kan op allerlei verschillende manieren; in SQL script, met behulp van views, table functions, stored procedures of Flowgraphs. Voor dit voorbeeld gebruik ik een calculation view om de data te prepareren en daarna een Flowgraph om de functie uit te voeren.
Ik begin de calculation view met een projectie-node van de Sales data. De data wordt gefilterd en geaggregeerd op Bacardi Rum Superior en Florida. De PAL functie heeft als input een timestamp en de data zelf. Met behulp van een Rank-Node creëer ik een integer TimeStamp. De data is nu geprepareerd als input voor de PAL functie.
Stap 4: Configureer en run PAL
De PAL functie voer ik uit met behulp van een Flowgraph. Om de functie uit te voeren heb ik als user wel de rechten nodig om dit te doen, dus ik geef mezelf de volgende rollen: AFL__SYS_AFL_AFLPAL_EXECUTE en AFL__SYS_AFL_AFLPAL_EXECUTE_WITH_GRANT_OPTION. De Flowgraph begint met de calculation view. Ik haal de data nog door een filter en dan gaat het door de PAL functie. Om de forecast en actuals te vergelijken voeg ik de uitkomst en de brondata weer samen.
Nu moeten de parameters voor de PAL functie worden bepaald. Dit kan in de properties van de Triple smoothing node. De meeste parameters laat ik op de default waarde staan. De CYCLE parameter geeft aan over welke periode de data zichzelf herhaalt, deze zet ik op 12. Verder kies ik als FORECAST_NUM 3 maanden. Na het runnen van deze Flowgraph heb ik mijn forecast in een fysieke tabel.
Alles in SAP Analaytics Cloud (SAC)
Stap 1: Data laden
Ik begin met het maken van een model op basis van de FY2019 net sales. De flat file wordt geïmporteerd als draft data. Dan kan ik er weer een model van maken. Het importeren van de data duurt een paar minuten, net als in HANA.
Stap 2: Data prepareren
In de modeler prepareer ik de data. Ik wil graag dat SAC de tijdskolom herkent. De YY-MMM format is niet beschikbaar maar als ik de ‘-‘ vervang door een spatie, herkent SAC de tijdskolom meteen als YY MMM. SAC valideert automatisch de kwaliteit van de data en herkent data types.
Om gebruik te maken van forecasting en value driver trees moet het vakje “Enable planning” aangevinkt zijn. Daarna kan ik in een paar minuten het model creëren. Als het model gemaakt is kan ik de dimensions bewerken. Ik stel in ieder geval het fiscale jaar in zoals Bacardi het definieert.
Terug in de model browser importeer ik ook de data van fiscal year 2018 uit een andere flat file. De data moet weer getransformeerd worden en daarna gemapped naar de huidige kolommen. Hierna kan ik pas hiërarchieën aanmaken. Nu is het model klaar.
Stap 3: Run forecast en resultaat
Mijn model is klaar dus ik kan de forecast gaan doen in een nieuwe story. Er hoeft niets voorbereid of geconfigureerd te worden. Ik maak een Time Series chart met mijn time dimension en net sales. Deze filter ik op Bacardi Rum Superior en Florida.
De forecast zelf is snel gemaakt. Met één druk op de knop berekent SAC de sales voor de komende maanden met behulp van een Triple smoothing function.
Resultaten
Het resultaat laat de forecast in blauw zien en de originele data in groen. Aangezien ik maar twee jaar aan data heb is de kwaliteit van deze forecast waarschijnlijk niet hoog. Meer data en wat veranderingen aan parameters zou de forecast kunnen verbeteren.
Het voorbereidende werk moet natuurlijk niet onderschat worden. Ik had vier stappen nodig voordat ik de PAL überhaupt kon runnen en daarvoor moesten nog een heleboel tabellen worden aangemaakt. Om de data echt visueel aantrekkelijk te maken zal ik nog een view moeten maken met een tijdsdimensie.
Met een paar drukken op de knop krijg je een mooie forecast in SAC. De hele workflow is intuïtief. Je hebt echter geen inzicht in wat er achter de schermen gebeurt, daar kun je slechts naar gissen. Om een seasonal trend te identificeren heeft SAC minstens drie cycles nodig van een tijdseenheid. Gezien de lengte van de forecast zal SAC hier een kwartaal als een cycle beschouwen. Als je het model vergelijkt met de twee jaar historische data lijkt de forecast in SAC minder accuraat. Met een extra jaar zal de forecast van SAC de seasonal trends beter oppakken en een kleinere afwijking hebben.
Conclusie
Voor dit voorbeeld is de kwaliteit van de forecast met de PAL in HANA beter dan die in SAC. Niet alleen wordt de seasonality opgevangen, maar de aflopende trend van 2018 naar 2019 lijkt ook zichtbaar in de forecast. Echter, meer historische data zal de forecast van SAC verbeteren en deze simpele oplossing is ontzettend makkelijk om mee te werken.
Dus, wil je snel een semi-accurate forecast maken, heb je veel data en weinig ervaring met SAP HANA? Kies dan absoluut voor SAC. De beste reden om voor HANA te kiezen is de grote hoeveelheid aan beschikbare algoritmes.