Halte_Deinen Code mit ABAP Unit Test Framework in Eclipse sauber

HALTE DEINEN CODE MIT DEM ABAP UNIT TEST FRAMEWORK IN ECLIPSE SAUBER – EIN PRAKTISCHES BEISPIEL

Unser heutiger Artikel ist der zweite aus einer zweiteiligen Serie, die sich mit der Nutzung des ABAP Unit Frameworks in Eclipse befasst. Der erste theoretische Teil bietet Dir das notwendige Know-how, um Unit Test Cases für Deinen Code zu erstellen.  In diesem zweiten Teil werden wir Dir das genaue Vorgehen in einem praktischen Beispiel demonstrieren.

Das praktische Beispiel

Nehmen wir als Beispiel eine globale Klasse eines Taschenrechners, die die vier grundlegenden mathematischen Operationen definiert: Addition, Subtraktion, Multiplikation und Division. Dies wird unsere Codebasis sein, für die wir die Unit-Testing-Technik innerhalb der Eclipse-Plattform anwenden werden.

Eclipse verfügt zwar nicht über einen Assistenten zum Erstellen automatisierter Komponententests, aber es enthält einige Vorlagen, die du verwenden kannst. In Anbetracht der Tatsache, dass du vielleicht neu in diesem Bereich bist, ist es viel besser, zuerst Tests von Hand zu schreiben. Also warte nicht mehr auf den richtigen Moment, sondern öffne deine Eclipse-IDE, wechsle in die ABAP-Perspektive und erstelle eine ABAP-Class mit folgendem Quellcode:

creating an ABAP-Class in eclipse

Abbildung 1: Erstellung einer ABAP-Class

Creating an ABAP-Class in Eclipse

Abbildung 2: Erstellung einer ABAP-Class (Fortsetzung)

Intuitiv ist die kleinste Komponente des Codes, die hier getestet werden kann, eine Methode und das wird auch unsere „Unit“ sein. Zum Beispiel werden wir die Methode „divide“ als Testmethode nehmen und verschiedene Fälle und Ausnahmen dafür behandeln.

Wie im theoretischen Teil dargestellt, besteht der erste Schritt bei der Definition der Testfälle darin, eine Testklasse anzulegen. Wähle dazu unten in der Editoransicht die Registerkarte „Test Classes (non existent)„.

first step in defining the test cases

In dem neuen Fenster, das auf dem Bildschirm erscheint, drücke die Schaltfläche „Create Test Classes…“ und eine Editorseite wird im geänderten Modus angezeigt. Du bist nun bereit, mit der Programmierung deiner Testklasse zu beginnen.

start coding a test class

Abbildung 3: Anlage einer Testklasse

Wenn du dir überlegst, welche Fälle abgedeckt werden sollen, solltest du verschiedene Kategorien von Eingangswerten berücksichtigen, die getestet werden müssen: positive Fälle, negative Fälle, Grenzwerte oder Kombinationen von Eingangswerten. Auf jeden Fall wird jeder Fall in einer separaten Testmethode behandelt. Die beste Vorgehensweise besteht darin, mit den einfachsten Szenarien zu beginnen und dann weiterhin komplexere Werte hinzuzufügen, die getestet werden sollen.

Für die Ausführung der Testmethoden können wir die Tastenkombinationen STRG + SHIFT + F10 verwenden oder wir wählen die Dropdown-Taste „Run as“ und wählen die Option „ABAP Unit Test“ aus der Liste. Der Status und die Dauer jedes Testfalls werden in der Ansicht „ABAP Unit“ angezeigt.

Im Falle eines Fehlers weist die fehlgeschlagene Testmethode ein anderes Symbol auf, das leicht zu erkennen ist, und – was noch wichtiger ist – die Fehlermeldungen werden dem Abschnitt „Failure trace“ hinzugefügt. Wenn wir auf den Pfad unter dem Knoten „Stack“ doppelklicken, zeigt er uns direkt den Codeblock, der tatsächlich falsch gelaufen ist. Unit-Tests ermöglichen Änderungen, und das macht unsere Tests sicher.

Abbildung 4: Fehlermeldung

Nach den notwendigen Anpassungen des Codes müssen wir nur noch einmal die Tests durchführen und prüfen, ob sich ihr Status geändert hat und tatsächlich keine Fehler mehr vorliegen.

failure coding test class abap

Abbildung 5: Statusprüfung der erneut durchgeführten Tests

Fügen wir also noch ein paar Testfälle hinzu und behandeln auch eine Ausnahme von der Funktiondivide„, der bekannten Division durch Null. Anschließend sollte unsere Testklasse wie folgt aussehen:

exception divide function coding ABAP

Abbildung 6: Ausnahme von der Funktion „divide„

abap codinng exception divide function

Abbildung 7: Ausnahme von der Funktion „divide„ (Fortsetzung)

ABAP coding divide function exception

Abbildung 8: Division durch Null

Bitte beachte, dass Tests in unbestimmter Reihenfolge und nicht in der Reihenfolge durchgeführt werden, in der sie in der Testklasse definiert wurden:

tests executed in an indefinite sequence ABAP

Abbildung 9: Unbestimmte Durchführung der Tests

Zu Lernzwecken und um das ABAP Unit Test Framework in Eclipse besser zu verstehen, solltest du dir nun noch einige eigene Testfälle erstellen.

Wie auch immer, wir sind noch nicht am Ende. Unser Testcode ist funktionsfähig, aber ist er sauber und optimiert?

Mit anderen Worten, nachdem alle Tests grün sind, sind wir nun bereit, einiges an Refactoring auf den Code anzuwenden. Andererseits, was ist Refactoring?

Refactoring ist der Prozess der Veränderung und Verbesserung der internen Struktur des bestehenden Codes durch Reduzierung der Komplexität, ohne das externe Verhalten zu verändern. Auf diese Weise werden die nächsten Tests schneller umzusetzen sein, aufgrund der Wiederverwendbarkeit und Lesbarkeit des Codes.

Darüber hinaus werden wir die speziellen Methoden des Unit-Frameworks nutzen und mit der „SETUP“-Methode den in unseren Testmethoden definierten „gegebenen“ Teil implementieren. Diese Methode wird vor jedem Testfall ausgeführt und dient letztlich dazu, auf den zu testenden Code zu verweisen. In Anbetracht der Überlegung, dass das Schreiben von Tests effizient sein sollte, sollten wir auch „Hilfsmethodenverwenden, um den Testcode lesbar, sauber und klein zu halten.

Alles in allem hat die Testklasse nach dem Refactoring folgendes Design:

 

refactoring a test class abap

Abbildung 10: Design der Testklasse

Abbildung 11: Design der Testklasse (Fortsetzung)

Unsere Testklasse hat nun eine bessere Code-Struktur, Effizienz, Übersichtlichkeit und Qualität. Zeit für einen Schluck Kaffee.

Du denkst, es ist unrealistisch, dass dein Produktcode und deine Tests gleichzeitig fertig sind? Ist es nicht….

Testgetriebene Entwicklung – Test Driven Development (TDE)

Wenn es um Unit Testing geht, ist es jedoch wichtig, die Technik der Testgetriebenen Entwicklung (TDE) zu beachten. Das auch als „Test First„-Verfahren bezeichnete Verfahren bedeutet, mit kleinen Anforderungen zu beginnen und erst einmal die Komponententests zu erstellen. Genauer gesagt, sollten wir das Verhalten der Anwendung, und was sie aus Benutzersicht tun sollte, skizzieren und die kleinen Features in ein Textdokument oder sogar als Kommentare in den Testklassen schreiben, die in der Entwicklung weiter verwendet werden sollen. Diese Anforderungen werden anschließend in konkrete Testfälle umgesetzt.

Mit der TDE-Technik erhälst du immer eine Antwort auf die Frage „Welchen Code soll ich als nächstes schreiben„. So wird beispielsweise jedes neue Merkmal hinzugefügt, indem zunächst ein Test für ein einzelnes Merkmal erstellt wird und nicht für mehrere auf einmal. Die Durchführung dieses Tests zeigt natürlich einen Fehler, der auf das Fehlen oder den Mangel des zu testenden Codes zurückzuführen ist. Zu diesem Zeitpunkt sollte man dann gerade genug Code anpassen, um den fehlgeschlagen Komponententest zu bestehen. Wenn der Test nicht bestanden wird, muss der Code bis dahin angepasst werden.

Da es sich bei dieser Technik um einen Entwicklungszyklus handelt, sollten wir die oben genannten Schritte für alle erforderlichen Funktionalitäten wiederholen, um eine größere Codeabdeckung zu erreichen. Der nächste Test wird den nächsten Schritt vorantreiben, d.h. die Testentwicklung treibt die Featureentwicklung voran. Am Ende des Zykluses, wenn alle Tests grün sind, sind der Produktionscode und der Testcode bereit für das Refactoring. Diese Phase ist von grundlegender Bedeutung, um die Lesbarkeit zu verbessern, Duplikate zu reduzieren und einen sauberen Code zu erhalten. Für weitere Informationen über Unit Testing und Test Driven Development empfehlen wir, sich für den OpenSAP-Kurs „Writing Testable Code for ABAP“ anzumelden, der auch die Grundlage des heutigen Artikels bildet.

Zusammenfassung

Darüber hinaus ist der Unit-Test in der Regel automatisiert. Eclipse bietet ein Unit-Test-Framework, das in das Plugin der ABAP Development Tools eingebettet ist und den Prozess der Definition und Ausführung automatisierter Unit-Tests erleichtert. Komponententests sind einfach, stabil und bieten eine große Codeabdeckung, wenn man ein geeignetes Setup hat. Tests können während des Entwicklungsprozesses erstellt und sogar zusammen mit dem Quellcode transportiert werden. Unit-Tests sind eigenständig und werden in zufälliger Reihenfolge durchgeführt. Achte beim Schreiben von Tests darauf, dass sie nicht über ihre Klassengrenzen hinausgehen und nicht mit anderen Komponenten interagieren sollten. Du solltest nur das Verhalten dieser Klasse oder der kleinen Komponente des zu testenden Codes testen.

Wie du vielleicht schon weisst, bestehen viele typische Softwareprojekte aus mehreren Modulen, die oft von verschiedenen Entwicklern programmiert werden. Die einzelnen Module werden zunächst isoliert getestet, und hier kommt die ABAP Unit zum Einsatz, als erste Stufe des Testens unseres Codes. Nachdem alle diese Einheiten entwickelt und getestet wurden, können wir die „unit tested“-Komponenten bündeln und ihr Verhalten mit der Integrationstechnik testen. Aber darüber unterhalten wir uns ein ander Mal…

Du möchtest noch mehr Wissenswertes aus der SAP Welt erfahren? Wir würden uns sehr freuen, dich wieder auf unserem Inspiricon-Blog zu sehen. Bis dahin kannst du dich gerne mit dem ABAP Unit Framework in Eclipse vertraut machen. Und nicht vergessen…. „Die Wahrheit kann nur an einem Ort gefunden werden: dem Code“. Viel Spaß beim Programmieren! 😊

 

Autor dieses Beitrags
Andra Atanasoaie Associate
Tel.: +49 (0) 7031 714 660 0
E-Mail: cluj@inspiricon.de
Halte Deinen Code mit ABAP Unit Test Framework in Eclipse sauber

Halte Deinen Code mit dem ABAP Unit Test Framework in Eclipse sauber – THEORETISCHE EINFÜHRUNG

Hast Du jemals darüber nachgedacht, wie wichtig das Testen für unser tägliches Leben ist? Stell Dir zum Beispiel vor, man baut ein Auto und setzt alle Teile zusammen, ohne auch nur ein einziges Teil davon zu testen. Und sobald die Fertigung abgeschlossen ist, will man an einem Autorennen teilnehmen und denken, dass auch alles wie erwartet funktioniert. Glaubst Du, der Motor springt überhaupt an? Ich denke, wir haben Grund genug, das zu bezweifeln.

Was kann also wichtiger sein, als unsere Produkte zu testen und die Fehler zu beheben, um die an den Kunden gelieferte Qualität sicherzustellen? Im Bereich der Softwareentwicklung wird diese Tätigkeit als Fehleranalyse bezeichnet.

Unser heutiger Artikel ist der erste aus einer zweiteiligen Serie, die sich mit der Nutzung des ABAP Unit Frameworks in Eclipse befasst. Dieser erste theoretische Teil bietet Dir das notwendige Know-how, um Unit Test Cases für Deinen Code zu erstellen.  Im zweiten Teil werden wir Dir das genaue Vorgehen dann in einem praktischen Beispiel demonstrieren.

Aber zuerst…..

Warum soll man eine Anwendung testen?

Ein Projektlebenszyklus umfasst viele Verfahren und Phasen, die methodisch verfolgt werden müssen. Als Softwareentwickler sollten wir uns bewusst sein, dass es immer notwendig ist, ein Produkt während der Entwicklungs- und Integrationsphase einer Anwendung zu testen. Unser Ziel ist es, die Anwendung über einen langen Zeitraum performant zu halten und ressourcenschonend zu arbeiten.

Das Testen ist unerlässlich und bringt mehrere Vorteile mit sich:

  • weniger Fehler, die zur Verbesserung der Gesamtkapazität und Genauigkeit führen
  • es ist kostengünstiger in Bezug auf zukünftige Entwicklungen.
  • verbessert die Qualität und sichert die Anwendungsperformance
  • fördert die Zufriedenheit und das Vertrauen der Kunden
  • verstärkt damit die Marktposition unserer Entwicklungen

Testverfahren

Computersysteme sind oft komplex und schwer zu verstehen. Infolgedessen wurden verschiedene Methoden implementiert, um das Verhalten eines Produkts zu bewerten. Im Hinblick auf das Testen unseres Softwarecodes gibt es mehrere Testverfahren, die entlang des Lebenszyklus einer Anwendung angewendet werden – wie nachfolgend dargestellt:

Testverfahren bei dem Test en des Softwarecodes

Abbildung 1: Testverfahren entlang des Lebenszyklus einer App

1.Unit Test

Der Unit Test ist die erste Stufe des Softwaretests, bei der einzelne Codeeinheiten daraufhin getestet werden, um zu prüfen, ob sie wie erwartet funktionieren. Folglich wird jedes Stück Code einer Reihe von Testfällen unterzogen. Es kann manuell durchgeführt werden, aber in der Regel sind die Tests automatisiert.

2.Integrated/Component Testing

Ist eine Technik, die sich darauf konzentriert, die Integration verschiedener Module, die zuvor Unit-Tests unterzogen wurden, zu testen, indem diese auf verschiedene Weise gruppiert werden und ihr Verhalten und ihre Datenkommunikation überprüft werden. Tests werden in einem Integrationstestplan vordefiniert und auf diese aggregierten Komponenten angewendet.

3.System-/UI-Tests

Dabei handelt es sich um eine Testtechnik, die sich auf die Designstruktur der Benutzeroberfläche (UI, User Interface) konzentriert. Sie kann manuell oder mit Hilfe von automatisierten Tools ausgeführt werden. Es ist eine Praxis, die verwendet wird, um die Eigenschaften und den Zustand der Oberflächenelemente zu bestätigen. Dies kann effektiv erreicht werden, durch die Schaffung einer Vielfalt und Kombination von Testfällen.

4.Exploratory/Acceptance Testing

Es umschreibt die Qualitätssicherungstechnik (QA), mit der untersucht und entdeckt wird, was in einer Anwendung funktioniert und was nicht. Die Tester haben dabei die Möglichkeit, die Anwendung in Echtzeit zu erkunden, zu erlernen und zu überprüfen. Testfälle sind im Vorfeld nicht notwendig, in der Regel entscheiden die Tester spontan, was als nächstes getestet wird und wie viel Zeit sie für eine bestimmte Funktionalität aufwenden.

Mit Ausnahme der Unit-Testing-Technik werden beim Testen einer Anwendung die inneren Details als „Black Box“ für den Tester betrachtet. Als Voraussetzung sollte jedoch ein grundlegendes Verständnis des Systemdesigns vorhanden sein.

Automatisiertes versus manuelles Testen

Erstens, was ist automatisiertes Testen und wie können wir das manuelle Testen definieren?

Das automatisierte Testen ist ein Prozess zum Testen des Softwarecodes, bei dem ein Minimum an geskripteten Tests ausgeführt wird. Diese Tests werden mit einem automatisierten Tool durchgeführt, das schließlich die Istwerte ausgibt und die Ergebnisse mit dem erwarteten Ergebnis vergleicht. Ziel der automatisierten Prüfung ist es, den Arbeitsaufwand und den Zeitaufwand so gering wie möglich zu halten. Diese Technik ist für große Projekte geeignet und praktisch, insbesondere wenn sie zu komplex sind, um sich nur auf manuelle Tests zu verlassen.

Das manuelle Testen hingegen eine Technik, um Fehler und Mängel in einer Softwareanwendung zu finden, indem eine Reihe von Testfällen von einer Person selbst durchgeführt wird. Es ist nicht notwendig, Kenntnisse über ein automatisiertes Zwischenwerkzeug zu haben, aber es kann sehr zeitaufwendig sein, wenn man bedenkt, dass die Tester, um die Vollständigkeit der Tests zu gewährleisten, ein geeignetes Schema erstellen müssen, das zu einem detaillierten Satz wichtiger Testfälle führt, die abgedeckt werden müssen.

Es wäre ideal den Code einer neuen Anwendung erstmal manuell zu testen oder nach einer ihrer größeren Änderung und nur danach neue automatisierte Tests zur besseren Abdeckung und zum besseren Verständnis der implementierten Funktionalitäten zu erstellen.

Dennoch besteht die Notwendigkeit, dass wir automatisierte Tests mit manuellen Tests kombinieren müssen, um einen vollständigen abgedeckten Testplan zu erstellen. Die Realität ist, es gibt kein „besseres“ oder „schlechteres“ Verfahren, sie sind einfach unterschiedlich.

Was ist Unit Testing und wann sollten wir es einsetzen?

Beginnen wir mit der Beantwortung der zweiten Frage. Die geeignete Antwort wäre: jedes einziges Mal wenn wir eine kleine Einheit und ihr Verhalten testen wollen. Du fragst dich vielleicht, was ist dann eine Einheit?

Eine „Einheit“ ist als die kleinste prüfbare Komponente einer Anwendung definiert, wie beispielsweise eine Klasse oder eine Methode, die von dem Rest des Codes isoliert und gesteuert werden kann, um zu prüfen, ob sie zur Verwendung geeignet ist.

Im Gegensatz zu den anderen Testtechniken ist bei der Verwendung von ABAP Unit Testing ein solides Verständnis der Systemarchitektur erforderlich. Daher wird Unit Testing auch als „White Box Testing“ oder „Gray Box Testing“ bezeichnet, und daher sollten Unit Tests von einem Entwickler erstellt und definiert werden.

Die meisten Programmiersprachen haben spezielle Unit-Test-Frameworks, so auch ABAP. Hier sind alle für das Testen notwendigen Hintergrundprozesse in eine IDE (Integrated Development Environment) integriert, so dass wir die Unit-Tests bei jeder Kompilierung des Testprogramms durchführen können.

Das am besten geeignete Tool in SAP for Unit Testing ist das ABAP Unit Framework in der Eclipse IDE. Dieses Framework ist Teil der ABAP Development Tools (ADT), daher muss man das Add-on nur in die Eclipse-Plattform installieren. Diejenigen, die es noch nicht installiert haben, finden weitere Informationen sowie eine Schritt-für-Schritt-Anleitung in diesem Blogbeitrag.

Unit-Tests interagieren nicht mit dem Environment oder mit externen Systemen der Codebasis. Sie laufen in den meisten Fällen immer in einem simulierten und isolierten Environment als separates Programm, in dem Komponententests als Testmethoden in lokalen Testklassen definiert sind. Wenn sich die Anwendung in dem realen, produktiven Environment ändert, wird der getestete Teil der Einheit aufgrund der Isolation vom System nicht automatisch informiert.

Um Tests effektiv zu gestalten, muss man den Code so strukturieren, dass es einfach ist, ihn zu testen. Dennoch erfordert es ein wenig Übung, gut darin zu werden und zu verstehen, was man isoliert testen soll.

Unit-Tests sollten dort durchgeführt werden, wo Tests eine klare Bedeutung haben. Der Business Layer Code ist allgemein für die Durchführung von Tests geeignet und stellt somit den Hauptfokus des Unit-Tests dar.

Unser Ziel ist es, effiziente automatisierte Tests neben testbarem Code zu schreiben. So haben wir beispielsweise bei Unit-Tests die Flexibilität, den Quellcode zu ändern und anzupassen, um die Fehler zu beheben und testbar zu machen. Der offensichtlichste Vorteil ist vor allem das Wissen, dass bei einer Änderung keine weiteren einzelnen Codeeinheiten betroffen sind.

automatisierte Tests schreiben

Abbildung 2: Schreiben von automatisierten Tests

Vorteile und Benefits

Als erste Stufe der Durchführung von Testfällen in einer Anwendung bietet der Unit-Test natürlich einige bemerkenswerte Vorteile. Nicht nur das, bei richtiger Einstellung sind Komponententests:

  • Schnell – man kann typischerweise Tausende von Tests/Sekunde durchführen
  • Einfach – Unit-Tests konzentrieren sich auf kleine Teile der Anwendung
  • Zeitnah – Tests werden alternativ mit dem Produktcode geschrieben

Aber auch Komponententests sind sehr effektiv, denn sie liefern:

  • Große Code-Coverage – in vielen Fällen bis zu 80-90% Code-Coverage
  • Einfache Fehleranalyse – Komponententests zeigen genau die Stelle an, an welcher der Code falsch läuft
  • Stabilität – die Wiederholbarkeit der Unit-Tests führt zu einem konstanten Verhalten, was sie stabil macht

Anlegen einer Testklasse

Im SAP-Umfeld wurden im Rahmen des objektorientierten Designs Komponententests eingeführt. Bei dieser Betrachtung können wir intuitiv feststellen, dass Komponententests perfekt mit Klassen zusammenarbeiten. In einem Szenario, in dem wir nicht in der Lage sind, den gesamten Berichtsfluss zu testen, sollten wir zumindest versuchen, kleine Teile davon zu testen.

Außerdem sollten wir nur die öffentliche Schnittstelle einer Anwendung testen und nicht die privaten Teile. Normalerweise ist es uns nicht erlaubt, Blöcke eines Reports direkt zu testen, wie INITIALISIERUNG oder START-OF-SELECTION, aber wir können die gleiche Logik implementieren, indem wir diese in Objektmethoden konvertieren und anschließend testen. Bemerkenswert ist es hier, dass die Modularisierung für eine bessere Programmierung sehr wichtig ist.

Die Hauptidee ist, dass wir Testklassen auf dieselbe Weise definieren und implementieren, wie wir eine reguläre ABAP Objects Klasse definieren. Was jedoch einen Unterschied macht, ist die Anweisung „FOR TESTING„, die wir der Testklassendefinition hinzufügen müssen. Beachte, dass diese Ergänzung die Anwendung grundsätzlich in zwei verschiedene Teile unterteilt: den Testcode und den Seriencode.

Auch wenn es noch keine einheitliche Namenskonvention gibt, schlägt SAP vor, den Namen der Testklassen wie in „LTC_<class_name>“ ein Präfix hinzuzufügen, um zu betonen, dass es sich um lokale Testklassen handelt und um ihren Fokus zu unterscheiden. Außerdem müssen wir für eine Testklasse auch die beiden Klassenattribute RISK LEVEL und DURATION angeben, die vom ABAP Unit Runner verwendet werden, um die Eigenschaften dieser Klasse zu interpretieren.

Das Attribut RISK LEVEL bezieht sich auf die Nebenwirkungen, die das System beeinflussen können:

  • HARMLOS – kein bestehender Prozess wird durch den Komponententest beeinflusst
  • GEFÄHRLICH – der Komponententest kann Änderungen an einer Datenbank oder persistenten Daten vornehmen
  • KRITISCH – Sowohl die Anpassung, als auch die persistenten Daten können geändert werden

Bitte beachte, dass jeder Komponententest mit dem Ziel definiert werden sollte, „harmlos“ zu sein, also das Environment in keiner Weise zu verändern.

Das Attribut DURATION bezieht sich auf die erwartete Ausführungszeit der Komponententests und kann es sein:

  • KURZ – weniger als eine Minute
  • MITTEL – weniger als fünf Minuten
  • LANG – länger als fünf Minuten, circa eine Stunde

Eventuell können diese Intervalle angepasst werden. Was wir jedoch beachten müssen, ist, dass, wenn die Ausführungszeit den angegebenen Parameter überschreitet, der ABAP Unit Runner einen Fehler auswirft.

Um dies kurz zu veranschaulichen, sollte eine Testklassendefinition letztendlich das folgende Format haben:

CLASS ltc_my_test_class DEFINITION FOR TESTING

RISK LEVEL Critical|Dangerous|Harmless

      DURATION Short|Medium|Long .

[…]

ENDCLASS.

Erwähnenswert ist es, dass der Teil des Codes in einer Anwendung, der dem Unit-Test unterzogen wird, normalerweise „CUT“ = Code Under Test genannt wird.

Wenn du mehr über Testklassen erfahren möchtest, empfehle ich dir die SAP Press E-Book-Publikation „ABAP Unit: Writing and Executing Unit Tests“, geschrieben von James Wood und Joseph Rupert.

Allerdings sind wir nun so weit gekommen, dass wir…..

Eine Testmethode anlegen

Eine Testmethode kann ausschließlich in einer Testklasse implementiert werden. Tatsächlich werden während eines Testlaufs Testmethoden als Einzeltests aufgerufen, so dass wir pro Testmethode nur eine Instanz der Testklasse haben.

Insbesondere wird hier die zu testende Methode, nämlich das Unit, gewöhnlich als „Methode im Test“ bezeichnet und ist Teil des Seriencodes.

Testmethoden haben keine Parameter, aber sie haben, ähnlich wie Testklassen, am Ende des DEFINITION-Teils den ZusatzFOR TESTING„. Ein weiterer wichtiger Punkt, der zu beachten ist, ist, dass eine Testmethode im PRIVATE SECTION der Klassendefinition deklariert wird, um zu unterstreichen, dass sie nur im Kontext ihrer Testklasse und nicht in anderen abgeleiteten Klassen wie folgt verwendet werden kann:

CLASS ltc_my_test_class DEFINITION FOR TESTING

      […] .

      PRIVATE SECTION.

      METHODS:

          test_method1 FOR TESTING.

          test_method2 FOR TESTING.

ENDCLASS.

Die einzige Situation, in der die Testmethoden in der PROTECTED SECTION deklariert werden können, ist, wenn diese Methoden Teil einer Oberklasse sind und von einer anderen Testklasse vererbt werden.

Der Implementierungsteil einer Testmethode sollte uns immer eine Geschichte darüber erzählen, was getestet werden soll, und dies sollte sich auch im Namen der Testmethode widerspiegeln. In der Regel folgt es dem ”given – when – then” Muster, das mit der Initialisierungs-, Ausführungs- und Ergebnisphase des Testfalls verbunden ist. Wir sollten uns eine Testmethode ähnlich einer logischen Geschichte wie folgt vorstellen:

„given“  -> ein bestimmtes Einvironment

Dies ist ein Initialisierungsteil, in dem unsere globale Klasse instanziiert wird.

when“  -> wir führen diesen CUT aus (Code under test)

Hier wird normalerweise die zu testende Methode zusammen mit den angegebenen Eingabewerten aufgerufen.

then“  -> dieses Ergebnis wird erwartet

Ein Prüfverfahren hat einen oder mehrere Eingänge und in der Regel einen einzigen Ausgang.

Signifikant ist es, dass im „then“ Teil der Testmethode das Ergebnis durch einen Vergleich zwischen dem tatsächlichen Wert, den die zu testende Methode zurückgibt, und dem tatsächlichen erwarteten Wert validiert wird. Wenn die Ergebnisse nicht übereinstimmen, gibt das Unit-Test-Framework einen Fehler aus. Dieser Vergleich erfolgt mit einer der Utility-Methoden der ABAP-Klasse „CL_ABAP_UNIT_ASSERT„, die „ASSERT_EQUALS“ genannt wird.

Die am häufigsten verwendeten Utility-Methoden neben der SAP-Dokumentation sind:

  • ASSERT_EQUALS – stellt die Gleichheit zweier Datenobjekte sicher
  • ASSERT_BOUND / ASSERT_NOT_BOUND – stellt die Gültigkeit / Ungültigkeit der Referenz einer Referenzvariablen sicher
  • ASSERT_INITIAL / ASSERT_NOT_INITIAL – stellt sicher, dass der Wert des Datenobjekts initial ist / nicht initial ist
  • ASSERT_TRUE / ASSERT_FALSE – stellt sicher, dass ein Boolescher gleich ABAP_TRUE / ABAP_FALSE ist
  • ASSERT_SUBRC – stellt einen bestimmten Wert des Rückgabecodes sicher
  • FAIL – Meldung der bedingungslosen Behauptung
  • ABORT – Abbruch der Testausführung wegen fehlendem Kontext

Sie werden auch als „Assertionsmethoden“ bezeichnet und dienen letztlich dazu, Nachrichten an den ABAP Unit-Runner zu übergeben.

Natürlich ist es nicht notwendig, dass eine Testmethode dem obigen Muster folgt, es ist nur ein Stil des Testsschreibens, der zum besseren Verständnis beiträgt. Aber, ist es zwingend erforderlich, dass die Logik in diese drei Teile integriert wird.

Wichtig zu wissen ist es, dass es mehrere spezielle private Methoden gibt, die in Testklassen verwendet werden und die vom ABAP Unit Framework bereitgestellt werden. Sie implementieren ein einzigartiges Testverhalten und beinhalten die Testobjekte und die für eine korrekte Ausführung notwendigen Verbindungen. Diese werden unten aufgezählt:

  • SETUP( ) – Instanzmethode, die vor jedem einzelnen Test oder vor jeder Ausführung einer Testmethode ausgeführt wird
  • Der „given“ Teil der Tests kann in der SETUP-Methode implementiert werden, nur wenn die Testmethoden den gleichen Code haben
  • TEARDOWN() – Instanzmethode, die nach jedem einzelnen Test oder nach jeder Ausführung einer Testmethode ausgeführt wird.
  • CLASS_SETUP() – Klassenmethode, die einmalig vor allen Tests der Klasse ausgeführt wird
  • CLASS_TEARDOWN() – Klassenmethode, die einmalig nach jedem Test der Klasse ausgeführt wird

Sie werden eigentlich auch „Fixture-Methoden“ genannt und haben vordefinierte Namen, damit die ABAP Unit sie erkennen kann. Diese Methoden sind optional und sollten nur verwendet werden, falls wir sie benötigen.

Es gibt bereits mehrere Softwareunternehmen, die Unit-Testing als Teil ihres Entwicklungsprozesses übernommen haben. Obwohl es schwierig sein kann, sich daran zu gewöhnen oder herauszufinden, welche Fälle abgedeckt werden sollen, führen Unit-Tests langfristig zu weniger Wartungsaufwand und Kosten. Unit-Tests werden in der Regel von Entwicklern erstellt, was der Grund ist, warum wir sie „White-Box“-Tests nennen. Und das macht Sinn, weil die Person, die den Code geschrieben hat, die qualifizierteste ist, um zu wissen, was und getestet werden kann und wie leicht zugänglich es ist. Darüber hinaus wird die Durchführung vieler Tests für die kleinen Komponenten der Anwendung insgesamt viel weniger Debugging erfordern, was auch Zeit spart. Und Zeit ist für einen Entwickler sehr wichtig, nicht wahr?

Nun, da wir den theoretischen Teil abgeschlossen haben, bist Du bereit für Praxis. Verpasse nicht den zweiten Teil dieser Serie, der Dir zeigt, wie man Unit Test Cases anhand eines praktischen Beispiels erstellt.

Quellenangabe der Bilder: https://open.sap.com

Autor dieses Beitrags
Andra Atanasoaie Associate
Tel.: +49 (0) 7031 714 660 0
E-Mail: cluj@inspiricon.de
Vertriebssteuerung mit Hilfe von Werttreiberbäumen

Vertriebssteuerung mit Hilfe von Werttreiberbäumen

Die Herausforderung

Eine transparente Steuerung des Vertriebs über unterschiedliche Unternehmenseinheiten hinweg stellt nach wie vor eine große Herausforderung für viele Unternehmen dar. Dieser Blogbeitrag berichtet über einen möglichen Ansatz und das ausgewählte Vorgehen.

Das im Beispiel vorgestellte Unternehmen ist international im Bereich komplexer Lichtlösungsprojekte tätig, die Landesgesellschaften haben viele Freiheiten und die einzelnen Niederlassungen und Büros arbeiten weitgehend autark.

Die Überlegung war daher, ein System zu entwickeln, das einerseits mehr Transparenz in Vertriebsaktivitäten, Erfolgsquoten, Erfolgstreiber und Prozesse bringt. Auf der anderen Seite ist das Unternehmen in einem wettbewerbsintensiven Markt tätig: Das Geschäft ist vielfach Projektarbeit, an der viele Beteiligte mitwirken: Architekten, Lichtplaner, Bauträger, Bauherren, Handwerker und auch behördliche Einrichtungen. Man kennt also vielfach nicht „den Kunden.“ So war z.B. bis dato nicht möglich, Kundenprofitabilitäten zu messen.

Aufgrund der Komplexität der Lichtlösungsprojekte, ist es für das Unternehmen entscheidend, möglichst nur solche Vorhaben voranzutreiben, die auch tatsächlich umgesetzt werden. Der Vertrieb arbeitet dann effektiv, wenn die Trefferquote hoch ist.

Lange Projektlaufzeiten erschweren die Nachvollziehbarkeit zusätzlich. Denn noch lange nachdem der Auftrag gebucht wurde, sind Mitarbeiter des Unternehmens und deren Partner – nicht selten aus unterschiedlichen Landesgesellschaften oder Geschäftsstellen – mit der Umsetzung von Vorhaben beschäftigt. Mit entsprechend zeitlichem Verzug erfolgt dann die Rechnungsstellung. Wie soll man die Performance des Vertriebs steuern, angesichts der vielen verschiedenen Beteiligten und Zeitpunkte, an denen Leistungen erbracht wurden, die für den Erfolg notwendig sind? Jeder arbeitet zu einem bestimmten Anteil und in einer unterschiedlichen Phase an einem Projekt.

Performance im Vertrieb bedeutet in diesem Fall nicht nur die Wirtschaftlichkeit anhand des Auftragseingangs zu messen. Auch die nachfolgenden Prozesse und Arbeiten – also die Spuren, die ein Mitarbeiter im System hinterlässt – sollen für die Leistungsermittlung mitberücksichtigt werden. Denn nicht selten werden während der Realisierung Gutschriften gewährt oder Reklamationen bearbeitet, ggf. kommt es sogar zu Zahlungsausfällen.

Die Lösung

In einer frühen Projektphase entstand ein ausgefeiltes Fachkonzept, in dem die Art der Darstellungen, Analysen und Reports detailliert beschrieben wurde. Es gab eine sehr klare Vorstellung von dem, was das System später leisten sollte. Von besonderer Wichtigkeit war die Möglichkeit, die Performance auf einen Blick haben erfassen zu können. Wie gut ist München im Vergleich zu Berlin, wie erfolgreich sind Teams, wodurch erklären sich Unterschiede im EBIT, warum erzielen einige Produkte höhere Margen als andere? Wie hoch waren die Aufwendungen im Backoffice und was können die Beteiligten lernen, um beim nächsten Projekt noch besser zu sein?

Um diese Fragen beantworten zu können, musste eine Konsolidierung von Kennzahlen sowie ein direkter Leistungsvergleich auf den unterschiedlichsten Ebenen möglich sein: Landesgesellschaft, Region, Niederlassung, vom Team bis zum einzelnen Mitarbeiter.

Das Fundament für den fachlichen Teil ist das Konzept der Wertetreiberbäume (Value Driver Trees). Kurz: Mit Hilfe einer hierarchischen Struktur lässt sich für unterschiedliche Fragestellungen sehr genau analysieren, welche Hebel bewegt werden müssen, um noch erfolgreicher zu sein. Anhand eines Wertetreiberbaums können Abhängigkeiten erkannt werden, auf deren Grundlage sich adäquate Maßnahmen aufsetzen lassen, um beispielsweise Kundenpotenziale besser auszuschöpfen.

Dazu 2 Beispiele.

Beispiel 1: From Quotation to Order

Beispiel 1: From Quotation to Order

Jedes Element des Treiberbaumes enthält immer 4 Werte: Minimum, Maximum, Durchschnitt sowie den Wert der ausgewählten Organisationseinheit in Relation zu der Einheit, mit welcher verglichen wird. Ein grün eingefärbter Balken bedeutet, dass die ausgewählte Organisationseinheit eine bessere Performance aufweist ist als der Durchschnitt der Vergleichseinheiten, ein roter Balken, dass die Organisationseinheit schlechter ist als der Durchschnitt.

Die Selektion erfolgt jeweils für eine bestimmte Periode, die Einheit, welche betrachtet werden soll, sowie für diejenige Einheit mit der verglichen wird.

Vom einzelnen Vertriebsmitarbeiter über Verkaufsbüro, Region, Landesgesellschaft bis hin zum Gesamtunternehmen können alle Werte miteinander verglichen werden.

Beispiel 2: EBIT Analysis

EBIT Analysis

Eine Besonderheit der EBIT Analyse ist die die Betrachtung von Gross- und Netsales. Gross Sales sind dabei die in SD fakturierten Umsätze, während bei den Netsales auch die tatsächlich erfolgten Zahlungseingänge, Forderungsausfälle, sowie nachträglich gewährte Rabatte etc. in die Berechnung einbezogen werden.

Die Präsentation der Auswertungen erfolgte im Unternehmensportal durch eine speziell für diesen Zweck entwickelte JAVA Anwendung, welche die Daten der zugrunde liegenden OLAP Query Ergebnisse des BW Servers zur Anzeige brachtet. Die Übertragung der Daten vom BW Server zum Unternehmensportal erfolgte mittels XML, das von einem speziell dafür entwickelten Funktionsbaustein auf dem BW Server erzeugt und dann an das Portal übertragen wurde.

Das Vorgehen

Im Rahmen des Projektvorgehens erfolgte zunächst tiefgehende Analyse der fachlichen Anforderungen gemeinsam mit dem Fachbereich.

Die Merkmale und Kennzahlen in den fachlichen Anforderungen wurden in ein Set von mehr als 100 Basiskennzahlen und Merkmalstrukturen aufgebrochen, das zusammen mit den IT Mitarbeitern des verifiziert und mit bereits vorhandenen Datenstrukturen abgeglichen wurde. Diese Basiskennzahlen und Merkmalstrukturen bildeten unter anderem die Grundlage für die Elemente der Treiberbaumstrukturen.

Im Anschluss daran erfolgte die parallele Entwicklung der Infoprovider und Transformationen im BW Backend System sowie der Frontend JAVA Applikation für das Unternehmensportal. Die benötigten Kennzahlen wurden weitgehend vorberechnet, um die OLAP Laufzeiten zu minimieren. Parallel dazu erfolgte die Konzeption der zugehörigen Frontend Applikation.

Nach umfangreichen Tests und Datenverifizierungen wurde die Applikation erfolge die Übergabe an den Fachbereich und die IT. Im Rahmen des Post Go Live Supports wurden letzte Fehler beseitigt und verschiedenen Optimierungen vorgenommen.

Solltest Du Fragen zu diesem Thema haben, bitte zögere nicht,uns zu kontaktieren. Wir bei Inspiricon freuen uns auf deine Kontaktaufnahme!

Quellenangabe der Bilder: SAP SE

Autor dieses Beitrags
Oskar Glaser Lead Consultant BI Reporting
Tel.: +49 (0) 7031 714 660 0
E-Mail: info@inspiricon.de
SAP Data Hub

SAP Data Hub

In meinem heutigen Blogbeitrag möchte ich dir einen groben Überblick über das Thema SAP Data Hub bieten. Laut SAP suchen Unternehmen eine einheitliche offene Lösung, um den Datenfluss in allen ihren Datenlandschaften auszuweiten, zu beschleunigen und für alle Benutzer zugänglich zu machen. Des Weiteren führte SAP eine Studie durch, welche zu dem Resultat kam, dass 74 Prozent der Entscheidungsträger in der IT der Ansicht sind, dass ihre Datenlandschaft so komplex ist, dass sie die Flexibilität beeinträchtigt. 86 Prozent gaben an, dass sie wesentlich mehr aus ihren Daten herausholen könnten, wenn sie nur darauf zugreifen könnten. Das SAP Data Hub soll hierfür die Lösung sein.

Was genau bietet SAP Data Hub?

SAP Data Hub ist eine zentrale Plattform, mit welcher man, durch die Verwendung von SAP VORA, Daten integrieren, die Datenverarbeitung verwalten und Metadaten managen kann. Man errichtet leistungsstarke Pipelines und verwaltet, teilt und verbreitet Daten. Das SAP Data Hub verfügt über diverse Grundeigenschaften, die für Unternehmen sehr vorteilhaft sind.

Ein Beispiel hierfür ist, dass Unternehmen durch ein besseres Verständnis ihrer Datenlandschaft stärker für Chancen und Risiken sensibilisiert werden. Das SAP Data Hub liefert den Abteilungen eines Unternehmens eine detaillierte und leicht verständliche Sicht auf ihre Datenlandschaften. Hierbei kann es sich um SAP-Softwarequellen wie SAP HANA oder SAP-fremde Quellen wie Apache Hadoop handeln. Durch diesen neuen Ansatz können Unternehmen die Nutzung und die Qualität ihrer Daten und Zusammenhänge besser verstehen.

SAP Data Hub

Abbildung 1: SAP Data Hub

Des Weiteren bietet SAP Data Hub eine Ausweitung und schnellere Durchführung von Datenprojekten durch Aufbau von leistungsfähigen Datenverarbeitungspipelines. Durch die einheitliche Umgebung ist es möglich diese Pipelines zu erstellen und auch einfach zu kopieren, zu modifizieren und wiederzuverwenden. Zusätzlich unterstützt SAP Data Hub flexible, datengesteuerte Anwendungen, die aufgrund der Verlagerung der Rechenprozesse in die nativen Umgebungen (Ort der Daten) verlagert werden, und damit schneller zu besseren Resultaten führen.

Doch was sind letztendlich die Hauptargumente für das Data Hub?

Folgende 5 Merkmale sollen diese zeigen:

1. Universal

Durch das Data Hub erlangt man eine umfassende Darstellung des Unternehmens und Big Data durch eine Verdichtung sämtlicher Daten von Datenquellen, Geschäftsanwendungen und -prozessen. Somit wird die Transparenz der Datenlandschaften verbessert und das Identifizieren von Big Data Quellen und deren Nutzbarkeit vereinfacht. Das „landscape management“ dient bei diesem Vorhaben als Managementtool für die Verbindungen, Zonen und Systeme der Landschaften. Mitarbeitern ist es zudem möglich, durch das Cockpit des Data Hubs, ihre tägliche Arbeit durch „Self-Service“ Schnittstellen zu verbessern. Folgende Abbildung zeigt ein solches Cockpit.

Cockpit SAP Data Hub

Abbildung 2: Cockpit des Data Hubs

2. Intelligent

Durch „intelligent discovery“ von Datenbeziehungen wird die Datenqualität anhand von „self-service“ verbessert. Das SAP Data Hub liefert eine grafische Darstellung der Datenzusammenhänge in in Ihrem Unternehmen.  Ihre Daten werden aufbereitet, bereinigt und deren Verbindungen zentral gesteuert (Data Discovery and Preparation). Durch die System- und Metadatenerkennung sind Sie in der Lage, jegliche angebundene Systeme zu durchsuchen (Metadata management and cataloguing) und durch den „modeler“ können die Datensätze bereitgestellt, Datenpipelines modelliert und Metadaten verwaltet werden. So verschafft man sich eine Darstellung des Datenflusses in seinen Systemen und Prozessen.

3. Effizient

Durch SAP Data Hub wird eine effiziente Datenanreicherung ermöglicht. Hierfür werden bei den verteilten Daten undDatenpipelines eine Vielzahl von Berechnungstechniken, wie OLAP und Machine-Learning verwendet. Um diese Funktion durchführen zu können, wird der „modeler“ genutzt.

4. Skalierbarkeit

Man orchestriert die Daten von Anfang bis Ende und verarbeitet siedort, wo sie sich befinden. Mit dieser Möglichkeit werden teure und unnötige Datenbewegungen vermieden. Hierbei spielt es keine Rolle, ob sich die Daten in der Cloud, „on-premise“ oder beidem befinden. Der Status dieser Workflows kann durch „monitoring and scheduling“ sehr gut geplant und überwacht werden.

5. Konform

Sicherheitsrichtlinien werden dynamisch an einem Ort gepflegt, zur Gewährleistung der Erfüllung gesetzlicher und unternehmensinterner Anforderungen. Ihre Metadaten können gemanagt, Qualitätsfehler entdeckt und behoben werden. Durch das „security and policies“ Feature können hierfür notwendige Sicherheitseinstellungen und Richtlinien erstellt werden.

Mit dem Data Hub vereinfacht SAP das Daten-Handling. Über Datenpipelines lenken und steuern Anwender die Datenflüsse und -bearbeitungen, wobei die Daten hierbei stets an ihrem Ablageort bleiben.

Zusammenfassend ergeben sich folgende Vorteile

  • Einfacherer, besser skalierbarer Ansatz für Integration, Management und Steuerung von Datenlandschaften
  • Ausweitung und schnellere Durchführung von datengestützten Projekten durch leistungsfähige Datenverarbeitungspipelines
  • Moderne, offene Architektur unterstützt verschiedenste Datenspeichersysteme
  • Eine zentrale Plattform für das Datenmanagement in ihrem Unternehmen

Es lässt sich bereits jetzt sagen, dass SAP Data Hub wirklich sehr interessant ist für Unternehmen, welche mehr aus ihren Daten herausholen wollen. Undschauen wir noch einen Schritt weiter.

Ein Blick in die Zukunft

SAP Data Hub ermöglicht es dem Unternehmen, den Mehrwert seiner Daten voll zu nutzen. Wenn man sich mit diesem Thema noch weiter beschäftigt, so stolpert man über den Begriff SAP Leonardo. Das SAP Data Hub bildet hierfür zusammen mit SAP Vora und SAP Cloud Plattform Big Data Services die zentralen Bausteine. SAP Leonardo ist die nächste Stufe der Datenauswertung und DAS System für digitale Innovationen. Aber dies ist ein anderes Thema mitwelchem wir uns in einem separaten Blogbeitrag befassen werden.

Fassen wir noch einmal zusammen

Die SAP ebnet mit neuen Lösungen, wie dem SAP Data Hub, ihren Kunden den Weg zu einer Data-Driven Company. Auch werden hierdurch digitale Innovationen ermöglicht. Das SAP Data Hub soll als zentrale Plattform dabei helfen, die sehr komplexen Datenströme beherrschbar beziehungsweise skalierbar zu machen. Zentrale Aufgaben des Systems sind die Datenintegration, -orchestrierung und Data Governance. Die dabei verwendeten Daten können in den verschiedensten Systemen oder Datenbanken liegen. Sowohl Systeme und Datenbanken von SAP, als auch von Drittanbietern, können durch geeignete Schnittstellen Open-Source Technologien mit eingebunden werden, was bisher nur schwer möglich war.

SAP unterstützt seine Kunden mit dem Data Hub darin, die richtigen Schritte zu gehen, um datengestützt agieren zu können. Diese Schritte mögen zwar mühsam erscheinen, werden aber für die zukünftige Wettbewerbsfähigkeit unerlässlich werden.

Quellenangabe der Bilder: SAP SE

Autor dieses Beitrags
Thomas Berblinger Trainee
Tel.: +49 (0) 7031 714 660 0
E-Mail: info@inspiricon.de
Advanced Analytics

Advanced Analytics: der neue Hype in der Fertigungsindustrie

Führungskräfte in der Fertigungsindustrie können durch den Einsatz von Advanced Analytics ihre Prozessschwächen reduzieren und somit Zeit und Geld sparen.

In unserem Artikel möchten wir auf die Hauptaspekte eines Advanced Analytics Projekts eingehen. Er richtet sich an Führungskräfte, CDO’s, Data Scientists, BI Consultants, Entwickler und an alle, die sich für Datenwissenschaft, Analytik und Innovation interessieren.

Beginnen wir mit der Definition des Begriffes Advanced Analytics

Laut Gartner, heißt „Advanced Analytics“ die autonome oder teilautonome Untersuchung von Daten oder Inhalten mit ausgefeilten Techniken und Tools, typischerweise jenseits der traditionellen Business Intelligence (BI), um tiefere Einblicke zu gewinnen, Vorhersagen zu treffen oder Empfehlungen zu generieren. Zu den fortgeschrittenen Analyseverfahren gehören u.a. Data/Text Mining, maschinelles Lernen, Pattern Matching, Forecasting, Visualisierung, semantische Analyse, Sentimentanalyse, Netzwerk- und Clusteranalyse, multivariate Statistik, Graphenanalyse, Simulation, komplexe Ereignisverarbeitung, sowie auch neuronale Netze.

Verbinden wir nun die allgemeine Theorie mit der fertigungsorientierten Anwendbarkeit

Ein tiefer Einblick in die historischen Prozessdaten ist der richtige Punkt, um ein fortgeschrittenes Analyseprojekt zu starten. Hier sollen Muster und Zusammenhänge zwischen den Prozessparametern identifiziert werden. Dies kann als Plattform dienen, auf der diejenigen Faktoren optimiert werden, die den größten Einfluss auf den problematischen KPI haben. Datentechnisch sind globale Hersteller derzeit sehr gut aufgestellt, sie verfügen über riesige Datenmenge in Echtzeit und die Fähigkeit, solche datenwissenschaftlichen Projekte auch durchzuführen.

Der Beginn eines solchen Projekts kann verständlicherweise überwältigend sein

Die meisten Unternehmen begegnen oft individuell sehr unterschiedlichen Probleme im Bereich Datenanalyse, aber eine der wiederkehrenden Situationen, die wir oft angetroffen haben, ist, dass Unternehmen mit langen Produktionszyklen (Monate, vielleicht sogar Jahre) in einigen Fällen zu wenig Daten haben, um statistisch aussagekräftig zu sein. Ein empfehlenswerter Ansatz in solchen Fällen ist die langfristige Berücksichtigung dieser Situation. Verantwortliche Führungskräfte sollten darauf bestehen, zunehmend in Systeme und Methoden zu investieren, die es ermöglichen, mehr Daten über einen bestimmten komplexen Prozess zu sammeln und damit die Datenanalysen auf diesen Prozess anwenden zu können.

Wollen wir nun versuchen, von der Theorie zur Praxis überzugehen und uns auf ein konkretes Szenario zu konzentrieren

Nehmen wir zum Beispiel ein echtes Projekt, an dem wir kürzlich gearbeitet haben. Das Projektziel war es, verwertbare Informationen im Zusammenhang mit einem bestimmten Fehler in der Produktionslinie eines großen Herstellers von elektronischen Komponenten zu entdecken.  Wie zu erwarten, muss diese Projektart sehr agil angegangen werden. Eine Hypothese, die vielleicht zunächst Teil des Projektkerns war, kann in wenigen Stunden widerlegt werden. Man kann jederzeit wieder ganz am Anfang stehen.

Dieser Aspekt kann Auswirkungen auf verschiedene Faktoren haben, wie zum Beispiel das Projektteam, ausgewählte Methoden oder Technologien. Wir empfehlen daher,  die folgenden Punkte unbedingt zu berücksichtigen:

  • Das Team sollte so agil und flexibel wie möglich sein
  • Idealerweise sollten auch die eingesetzten Technologien so agile freundlich wie möglich sein

Auf die Auswahl des richtigen Teams und der richtigen Technologien haben natürlich auch immer andere Faktoren, wie das spezifische Szenario, das Budget, die Qualifikation der Teammitglieder und die verfügbare Infrastruktur einen Einfluss und können diese gegebenenfalls einschränken.

In unserem Fall war die Ausgangsposition, dass wir sowohl über Kenntnisse in SAP- als auch in Python-basierten Technologien verfügen, was ideal ist. Auch aus Infrastruktursicht konnten wir, für dieses spezifisches Projekt zwischen den beiden Technologien wählen. Die Wahl richtete sich schlußendlich nach der Agilität der Lösung und der Unterstützung der Entwickler-Community. Am Ende unseres Artikels werden wir die verwendeten Technologien noch vorstellen.

 Methodologie

Wenn man ein Standard-Prozessmodell zur Definition seiner Sprints verwenden möchte, gibt es zwei Hauptoptionen, die man nutzen kann:

  • Man kann seine Sprints basierend auf CRISP – DM (Cross-industry Standard Process for Data Mining) bestimmen

Advanced Analytics

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abbildung 1: Cross-industry Standard Process for Data Mining (CRISP – DM )

  • Oder man verwendet da ASUM – DM (Analytics Solutions Unified Method) als Standard-Prozessmodell

Analytic Solution Unified Method

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abbildung 2: Analytic Solution Unified Method (ASUM) 

Hierbei gibt es keine richtige oder falsche Option, diese Liste ist nicht vollständig und eine maßgeschneiderte Lösung, basierend auf einer Standardmethode, kann oftmals zu besseren Ergebnissen führen.

Angewandte Techniken

Die wichtigsten Techniken, welche wir in unserem Projekt eingesetzt haben, sind in folgender Übersicht von McKinsey dargestellt.

Tools Advanced Analytics

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abbildung 3: Wichtige Technicken von McKinsey

Maßgeschneiderte Techniken

Zusätzlich zu den Grundtechniken muss man dann gegebenenfalls noch einen Schritt weiter gehen. Zum Beispiel durch eineAnalyse von Simulation vs. Korrelation. In unserem Fall sah eine Korrelationsanalyse sehr vielversprechend aus, aber uns fehlten die Daten, um die Korrelation richtig zu isolieren.

In diesem Fall ist es uns gelungen, die Funktion auszumachen, die die jeweilige Trendlinie ausgibt und sie mit einer bestehenden Hypothese zu verbinden. Die auf der Simulation basierende Hypothese bildete die Trendlinien ab, womit die Hypothese validiert wurde.

Werfen wir nun einen Blick auf einige unserer erzielten Ergebnisse

Ein Teil der verwertbaren Informationen, die wir erhalten haben, resultiert aus dem Zusammenspiel aus der Expertise des Kundenund unseres datenwissenschaftlichen Wissens. Die Resultate waren vor allem die folgenden:

  • Identifizierung und Eingrenzung des Fehleraufkommens auf nur drei Produkte (verwendete Technik – Data Visualization
  • Der Kunde konnte infolgedessen die Arbeitsbelastung seiner Maschinen anhand von Kennzahlen zur Fehlerquote optimieren (verwendete Technik – Data Visualization, Significance testing)
  • Es wurden Trends und Zusammenhänge zwischen den Verpackungsparametern und der Fehlerquote identifiziert (verwendete Technik – Correlation Analysis)
  • Durch Simulationen haben konnten wir eine Hypothese validieren, die auf die Prozessstufe und den Wafer verweist, an welchem der Fehler auftritt (verwendete Technik – Simulation vs Correlation Analysis)

Schlussfolgerung nach Übergabe unserer Lösung

Das Projekt ermöglichte  den Mitarbeitern des Kunden, mehr faktenbasierte Diskussionen zu führen und die tatsächlichen Auswirkungen verschiedener Parameter zu vergleichen, bevor sie Maßnahmen zur Produktivitätssteigerung ergreifen.

Das Wichtigste aber war, dass sie den Fertigungsprozess dynamisch optimieren konnten, indem sie Experimente zur Produktionsoptimierung aufbauten.

Unsere Data Science Ziele dienen letztlich der Strukturierung großer Datenmengen, der Suche nach überzeugenden Mustern und schließlich der Anpassung an den jeweiligen Bedarf im Unternehmen (Daten ® Wissen ® verwertbare Intelligenz).

Wie versprochen, werfen wir nun endlich auch einen Blick auf unser Setup

Kerntechnologien

  • Python
  • Jupyter Notebook – webbasierte Python-Umgebung
  • Anaconda – Paket- und Umgebungsmanagementund Python-Distribution
  • Pandas – Python Bibliothek für Datenmanipulation, Slicing & Dicing
  • NumPy – Programmbibliothek für Python. Unterstützung für große, mehrdimensionale Arrays und Matrizen, zusammen mit einer großen Sammlung von mathematischen Funktionen auf hohem Niveau, um auf diesen Arrays zu arbeiten.
  • Bokeh – Visualisierungsbibliothek: interaktiv verwendet war es ein großes Plus (besonders nützlich war die Zoom-Funktionalität). Es Es sind einige andere Bibliotheken verfügbar, die einfacher zu benutzen sind und den Anforderungen ebenfalls entsprechen könnten, aber selbst wenn Bokeh ein wenig komplex ist, sind die Funktionen, die es bietet, großartig und sehr gut anpassbar. Wir können es sehr empfehlen.
  • SciPy – Open-Source Umgebung für wissenschaftliche und technische Berechungen.
  • Scikit-learn– eine kostenlose Machine Learning Software-Bibliothek -. Sie bietet verschiedene Klassifikations-, Regressions– und Clustering-Algorithmen, darunter Support-Vektor-Maschinen, Random Forest, Gradient Boosting, k-means und DBSCAN, und ist so konzipiert, dass sie mit den numerischen und wissenschaftlichen Python-Bibliotheken NumPy und SciPy

Sekundäre Technologien:

  • SAP Hana
  • SAP Lumira Discovery
  • Orange – Open-Source-Datenvisualisierungs-, Machine Learning und Data-Mining-Toolkit.

Die technisch versierten unter Euch können auch die nächste Datei herunterladen, in der wir einige Codeschnipsel und Notizen zusammengestellt haben, damit ihr einen Eindruck davon bekommt, was diese Art der Entwicklung alles beinhaltet.

Du möchtest mehr über unsere Methoden und Projekte erfahren oder können wir sonst noch etwas für Dich tun? Besuche unseren Blog für regelmäßige Updates. Zögere nicht, uns direkt mit deinen Fragen und deinem Feedback zu kontaktieren. Wir freuen uns auf Deine Kontaktaufnahme!

Quellenangabe der Bilder: McKinsey & Company, IBM, Bosch Software Innovation

Quellen: McKinsey, Gartner, Wikipedia

Autor dieses Beitrags
Ovidiu Costea Consultant SAP BI
Tel.: +49 (0) 7031 714 660 0
E-Mail: cluj@inspiricon.de
LoB-supply-chain-management

Neue Line of Business: Supply Chain Management

Nach vier Jahren dynamischem Wachstums beschließt Inspiricon die Etablierung einer neuen Line of Business „Supply Chain Management“. Durch die Schaffung der Struktur, schärft Inspiricon weiter sein Profil, kombiniert sein Prozesswissen im Bereich Supply Chain Management mit der hohen Expertise im Bereich SAP Business Intelligence und richtet seine Kompetenz verstärkt auf die Nachfrage am Markt aus.

Dabei kann Inspiricon in seiner kurzen Unternehmenshistorie bereits auf zahlreiche Erfolge zurückblicken: Von der Einführung eines globalen Price Tracking Tools im strategischen Einkauf der Giesecke & Devrient GmbH, dem gezielten und konsequenten Projektmanagement und Coaching zur Sicherstellung einer zeitgemäßen Einführung eines Fertigungsleitstandes bei der Kulmbach Töpfer GmbH bis hin zur Optimierung weltweiter Logistikprozesse eines Weltmarktführers im Zuschlagstoffbereich – in den vergangenen Jahren wurden weitere Success Stories geschrieben.

Der Schwerpunkt der Line of Business liegt auf den folgenden Fokusthemen:

Supply Chain Analytics und Performance Measurement:

Supply Chain Analytics erzeugt Transparenz und Visibilität entlang der Lieferkette und hebt damit verbundene Potenziale in der Logistik bzw. dem Supply Chain Management. Typische Ziele sind neben der Verbesserung des Lieferbereitschaftsgrads, Reaktionsfähigkeit und Anpassungsfähigkeit von Supply Chains, oftmals auch die Verkürzung von Auftragsdurchlaufzeiten, die Reduzierung von Beständen, Steigerung der Kapazitätsauslastung oder Verbesserung der Planungsgenauigkeit. Im Mittelpunkt steht dabei die Implementierung und Visualisierung geeigneter Kennzahlen.

Kennzahlen werden dazu genutzt, Zielkonflikte zu lösen, Abweichungen, Chancen und Risiken zu erkennen, geben Aufschluss über Schwachstellen, ermöglichen eine leistungsorientierte Bewertung von Prozessen, Organisationseinheiten oder Mitarbeitern. Sie legen die Grundlage für die Durchführung geeigneter Optimierungsmaßnahmen.

Um die Aussagefähigkeit von Kennzahlen hochzuhalten, ist eine grundsätzliche Beschränkung der Anzahl sinnvoll. Darüber hinaus ist es wichtig Wirkungszusammenhänge erfassen und bewerten zu können. In einem gut funktionierenden Kennzahlensystem können diese bis auf die Ebene operativer Basisdaten vorgenommen werden.

Ausgangsfrage bei der Definition eines solchen Systems ist stets: Welche Kennzahlen lohnt es sich überhaupt auszuwerten? Den Rahmen zur Beantwortung bildet die Supply Chain-Prozesslandschaft- von der Planung, Beschaffung von Rohmaterialien, der Fertigung und Distribution bis hin zum Transport zum Endkunden.

 

Supply-Chan-Analytics-Inspiricon

Supply Chain Analytics umfasst dabei insbesondere auch die Anwendung analytischer Software und Methoden. Besonders im Trend sind die Technologien Big Data, Echtzeitdatenerfassung, Self-Service-BI auch insbesondere Mobilität und Cloud. Diese aktuellen Technologien helfen, die Supply Chain besser zu planen und zu steuern. Neben den fachlichen Anforderungen eines Unternehmens sind IT-strategische Voraussetzungen und Gesichtspunkte zu berücksichtigen, was im Idealfall – d.h. um eine optimale Abdeckung zu erreichen – bei unterschiedlichen Kunden analog zu individuellen Lösungen führen kann und sollte.

Die Services in der neuen Line of Business

Von der Entwicklung einer Performance-Measurement-Strategie und der Definition relevanter Kennzahlen bis hin zu konkreten Implementierung in SAP Technologie –  Inspiricon deckt alle wesentlichen Aspekte eines Supply Chain Analytics Projektes ab. In Folge der Ableitung der Strategie und der vollumfänglichen Erfassung aller Anforderungen werden verschiedene Implementierungsszenarien besprochen, Lösungen konzipiert, umgesetzt und dabei dauerhaft und mit der Zielsetzung abgeglichen.

Durch konkrete Empfehlungen zur Auswahl geeigneter Instrumente und hilfreiche Tipps aus der Praxis, wie diese am geeignetsten bei der Umsetzung in Visualisierungen sowie der Analyse und Bewertung anzuwenden sind, helfen wir unseren Kunden, dafür zu sorgen, dass elementare Informationen und Erkenntnisse auf die richtige Weise, zur richtigen Zeit an die richtige Ort gelangen und somit auch damit nachhaltig zum Unternehmenserfolg beitragen.

Sie überlegen auf SAP BW/4HANA umzusteigen? Ein solcher Releasewechsel bildet immer auch die Chance zur strategischen Neuausrichtung und der Adjustierung Ihres Fachkonzepts.

Im Rahmen unseres Supply Chain Analytics Workshops entwickeln wir mit Ihnen gemeinsamen Ihre zukünftige Performance Measurement Strategie in der Supply Chain und bringen dabei unsere Erfahrungen und Best Practices ein.

Fordern Sie jetzt weitere Informationen zum 1-Tages-Workshop Supply Chain Analytics an.

Supply Chain Digitalisierung und Industrie 4.0:

Mit der zunehmenden Digitalisierung und der weiteren Entwicklung durch das Internet der Dinge entstehen auch neue Herausforderungen im Bereich Business Intelligence. Die Industrie 4.0 legt dabei nicht nur neue Perspektiven und Möglichkeiten offen, die Supply Chain zu gestalten, es entwickeln sich gar gänzlich neue Prozesse und Geschäftsfelder. Wie können Analysetechnologien helfen, diesen Prozess zu unterstützen und wie verändern sich dabei die Anforderungen an moderne BI-Systeme? Welche neuen Möglichkeiten und Erkenntnisse ergeben sich aus der Anwendung dieser auf die sich verändernde Prozesslandschaft?

Eine Studie des Fraunhofer-Instituts für Materialfluss und Logistik (IML) und des Bundesverbands Materialwirtschaft, Einkauf und Logistik e.V. (BME) zum Thema „Einkauf 4.0“ kam in den vergangenen Jahren etwa zu der Einschätzung, dass durch die zunehmende Digitalisierung bereits heute eine vollständige Autonomisierung der operativen Einkaufsprozesse erreicht werden könne. Wesentliche Prozessaktivitäten würden durch moderne Technologien umgesetzt, weshalb sich nicht nur eine Verlagerung des Fokus auf den strategischen Einkauf und damit einhergehend eine gestiegene Erwartungshaltung und zunehmende Komplexität ergäben, sondern auch ein verändertes Rollenbild des Einkäufers selbst. Dieser entwickle sich hin zu einem Schnittstellenmanager oder auch Datenanalysten.

Gleichzeitig ziehen immer mehr moderne Technologien in den Bereich moderner Fertigungsanlagen ein. „Smart Factory“ ist der Begriff aus der Forschung, welcher die Vision einer Produktionsumgebung widerspiegelt, in der sich Fertigungsanlagen ohne menschliche Eingriffe weitgehend selbst organisieren können sollen. Sogenannte cyber-physische Systeme sollen über das Internet der Dinge miteinander kommunizieren und mit Methoden der Künstlichen Intelligenz (KI) wie dem Maschinellen Lernen gesteuert werden.

In der Logistik zeigen verschiedene Umfragen, dass bereits ein Großteil der Verlader – also Unternehmen, die Ladungen an Logistikdienstleister (LSPs) vergeben – und beinahe alle Logistikunternehmen, Technologien zur Positionsbestimmung verwenden. Auch weitere Basistechnologien wie im Bereich Sensor- oder Auto-ID (RFID), Mobilfunk oder Planungs- und Simulationstechnologien erfreuen sich großer Beliebtheit und sind weit verbreitet. Und da diese Technologien im Allgemeinen noch nicht ausgerollt zu sein scheinen bzw. in der Breite eingesetzt werden, wird schnell klar: Die Nutzenpotentiale, die sich durch darauf aufbauende Technologien – wie z.B. im Bereich Big Data – ergeben, sind es noch viel weniger. So manch ein Unternehmen gibt sich dem Ansatz hin, Daten zu sammeln, weiß dabei jedoch noch nicht genau, wie diese überhaupt nutzbar gemacht werden können.

Ziel der der Line of Business SCM bei Inspiricon ist es beide Welten zusammen zu bringen – die Prozesssicht der Supply Chain und moderne Analysetechnologien –und diese zu neuen und innovativen Anwendungsfällen zu kombinieren. Wir beschäftigen uns mit den aktuellen Trends und Herausforderungen der Supply Chain Digitalisierung und blicken dabei auf neuste Technologien rund um Big Data, Advanced Analytics, Machine Learning oder auch Predictive Analytics. Aktuelle Ansätze zielen bereits auf konkrete Verbesserungen im Kontext des Supply Chain Risikomanagements oder auch dem Tracking und Tracing von Transporten ab.

Wokshop-SCA-Inspiricon

Die in der Line of Business definierten Services richten sich an Unternehmen aus Industrie und Handel gleichermaßen wie an die Konsumgüter-, Pharmaindustrie oder weitere Branchen. Sie interessieren sich für unsere Methoden, Projekte oder haben ein anderes Anliegen? Wir halten Sie über unseren Blog auf dem Laufenden. Weiterhin freuen wir uns jederzeit über Ihre Kontaktaufnahme!

Quellenangabe: Supply-Chain-Controlling mit SAP BW (SAP Press)

Autor dieses Beitrags
Daniel Schauwecker Lead Consultant Visualisation
Tel.: +49 (0) 7031 714 660 0
E-Mail: info@inspiricon.de
Maschinelles-Lernen-mit-SAP-HANA-und-SAP-Fiori

Machine Learning mit SAP HANA und SAP Fiori

Was ist maschinelles Lernen und warum ist es so wichtig?

Auf jeden Fall ist es heute in aller Munde. Wir sollten also zunächst einmal klären, warum genau alle Welt so interessiert daran ist.

Der Grund, warum maschinelles Lernen in aller Munde ist, ist die Tatsache, dass es uns in vielen Bereichen gewaltige Fortschritte bringt. Es erlaubt Computern, bestimmte Aufgaben nicht nur auszuführen, sondern die zugrunde liegenden Regeln für die Ausführung dieser Aufgaben im Vorfeld überhaupt erst zu erlernen (also basierend auf historischen Daten aus Erfahrungen zu lernen).

Beispiele

Ein gutes Beispiel ist das Gesundheitswesen. Hier werden Algorithmen für das maschinelle Lernen bereits erfolgreich eingesetzt, um die Anzeichen für ein Reihe schwerer Krankheiten wie zum Beispiel Brustkrebs frühestmöglich zu erkennen und so das Risiko für Patienten zu senken.

Im Finanzwesen kommen Lernalgorithmen zum Einsatz, um Betrugsversuchen auf die Spur zu kommen und Geldwäsche zu bekämpfen. Derartige Algorithmen können Abermillionen von Transaktionen analysieren und dabei verdächtige Muster erkennen und offenlegen.

Im Bereich der Online-Sicherheit werden Algorithmen für das maschinelle Lernen eingesetzt, um verdächtiges Verhalten zu beobachten und Datenschutzverletzungen zu erkennen.

Und nicht zuletzt ist maschinelles Lernen schon längst Teil unseres Alltags. Egal, ob wir mit Siri auf unseren Apple-Geräten oder mit Alexa über unseren Echo kommunizieren, in den sozialen Netzwerken unterwegs sind oder uns von Google Maps leiten lassen, den Kern all dieser Systeme bilden maschinelle Lernalgorithmen.

Auch im Tagesgeschäft vieler Unternehmen sorgen diese Algorithmen für die Automatisierung grundlegender Aufgaben, die früher von Hand verrichtet wurden, so zum Beispiel bei der Prüfung von Rechnungen auf Duplikate, Bestellungen und vielem mehr. …

Im Bereich Business Intelligence nimmt maschinelles Lernen als Bestandteil von Predictive-Analytics-Verfahren ebenfalls ein wichtige Rolle ein und ermöglicht es Mitarbeiten, bestimmte Ergebnisse zu prognostizieren. So können im Vertrieb zum Beispiel Vorhersagen zu Verkaufszahlen getroffen werden und Führungskräfte können verschiedene Prognosen zu den möglichen Auswirkungen von Entscheidungen auswerten und so ihre Entscheidungsfindung unterstützen.

Aber wie funktioniert es?

Machen wir einen kleinen Test:

  • 2 → 4
  • 3 → 9
  • 5 → 25
  • 6 → ?

Die richtige Antwort ist natürlich 36. Und der Grund, warum du das wusstet, ist die Tatsache, dass du ein Muster erkannt hast. Und genau so arbeiten auch maschinelle Lernalgorithmen. Sie werden anhand von Beispieldaten trainiert und lernen auf diesem Wege, Muster zu erkennen und diese Muster den richtigen Reaktionen zuzuordnen (aus Erfahrung lernen). Nach Abschluss des Trainings können wir den Algorithmus mit neuen Daten füttern und erhalten (hoffentlich) die richtige Antwort auf unsere Abfrage.

Natürlich sind diese Algorithmen auf die Bearbeitung von Problemen ausgelegt, die um ein Vielfaches komplexer sind als unser kleiner Test und zudem unzählige Eingabewerte erfordern. So stellen auch komplexe Aufgaben wie Bild- und Spracherkennung oder die Vorhersage möglicher Vertriebsergebnisse anhand von historischen Marktdaten kein Problem dar.

 Maschinelles Lernen mit SAP HANA und Fiori

Als viel diskutiertes Thema weckt maschinelles Lernen natürlich auch Neugier und Experimentierfreude und auch wir bilden da keine Ausnahme. Bei Inspiricon stellte sich vor allem die Frage, welchen Mehrwert dieser neue Trend in unseren angestammten Fachgebieten wie BI, SAP Fiori und SAP HANA entfalten könnte.

Dabei hat sich gezeigt, dass SAP HANA das maschinelle Lernen bereits heute schon sehr beachtlich unterstützt. Mit der SAP HANA Predictive Analytics Library ermöglicht SAP die Verwendung von maschinellen Lernalgorithmen und sogar den Aufbau von neuronalen Netzen. Nutzt man diese Stärken und verbindet sie mit SAP Fiori, lassen sich einige hochinteressante Anwendungen im Bereich der Predictive Analytics realisieren. So konnten wir beispielweise ein kleine Fiori-Anwendung für die Prognose von Verkaufszahlen in den einzelnen Filialen einer Supermarktkette erstellen. Die folgende Abbildung zeigt einen groben Überblick über die Architektur dieser Anwendung:

Architecture-Application-Machine-Learning

Die von uns entwickelte Fiori-Anwendung wäre vor allem für Führungskräfte interessant und würde es ihnen erlauben, innerhalb der Anwendung die Prognose bis zum Jahresende auszuwerten. Wir beschäftigen uns auch weiterhin mit diesem Szenario und arbeiten daran, es um zusätzliche Funktionen wie zum Beispiel “Was-wäre-wenn-Szenarien” zu erweitern, über die sich die Auswirkungen von Management- und Marketingentscheidungen (z. B. Werbeaktionen) auf die prognostizierten Verkaufszahlen untersuchen lassen:

Fiori-Predictive-Demo-Machine-Learning

Fazit

Maschinelles Lernen ist schon mit einem einfachen HANA-Backend möglich!

Zwar gibt es am Markt bereits umfassende und leistungsstarke Tools wie z. B. Tensorflow für neuronale Netzwerke oder SAP Predictive Analytics, aber ihr solltet unbedingt wissen, dass diese für einen Einstieg in das Thema nicht unbedingt zwingend erforderlich sind. Wie schon oben gesagt, erhaltet ihr mit SAP HANA schon alles, was ihr braucht. Und mit SAP Fiori lassen sich UI-Anwendungen realisieren, die das implementierte Szenario optimal unterstützen. Für die vorausgehende Analyse der Daten stehen euch leistungsstarke und zudem kostenlose Analysetools wie Python (Pandas) oder R zur Verfügung. Daraus kann sich ein durchaus sehr attraktiver Ansatz ergeben, der sich auch ohne zusätzliche Lizenz- oder Infrastrukturkosten umsetzen lässt und insbesondere für kleinere Probleme geeignet ist, die auch ohne intensive Datenverarbeitung auskommen.

Für welchen Ansatz ihr euch letzten Endes entscheidet, hängt ganz allein von dem jeweiligen Anwendungsfall ab und sollte vom Entwicklungsteam genau durchdacht sein. Ein wichtiger Faktor, der bei der Entscheidungsfindung nicht außer Acht gelassen werden darf, sind die Kosten, die durch Pflege und Lizenzen entstehen.

Quellenangabe der Bilder:  Inspiricon AG

Autor dieses Beitrags
Gerald Iakobinyi-Pich Solution Architect
Tel.: +49 (0) 7031 714 660 0
E-Mail: cluj@inspiricon.de

Wie Ihr Predictive Analytics als native Hana-Funktion nutzen könnt

In diesem Artikel befassen wir uns eingehend mit den nativen Predictive-Analytics-Möglichkeiten in HANA und erklären dabei Schritt für Schritt, wie ihr die Predictive Analytics Library (PAL), ein Bestandteil der Application Function Library (AFL), einsetzen könnt, um ein mehrfaches lineares Regressionsmodell zu erstellen und anhand dieses Models Prognosen abzuleiten.

Du möchtest mehr zum Thema Predictive Analytics erfahren? Dann kann ich dir zwei unserer vorausgegangenen Artikel empfehlen:

  1. Die Welt der Predictive Analytics
  2. Eine Anleitung zum eigenen Vorhersagemodell

PAL – eine Einführung

Wir haben in der Vergangenheit bereits über den Einsatz von SAP Business Objects Predictive Analytics zur prädiktiven Analyse gesprochen. Eine weitere Möglichkeit zum Erstellen und Trainieren von Modellen und zur Ableitung von Prognosen von diesen Modellen eröffnet sich zudem durch die Nutzung der Predictive Analytics Library. Diese Methode ist weitaus komplexer und erfordert vom Anwender zudem technisches Fachwissen.

Zwar ist die von SAP angebotene Lösung benutzerfreundlicher, doch eröffnet die Implementierung von HANA-PAL-Lösungen durch die Erstellung eines nativen HANA-Prozesses weitaus größere Möglichkeiten zur Aufnahme der Daten in andere Anwendungen.

Der Einsatz des Predictive-Analytics-Tools ist vor allem aufgrund der Lizenzgebühren mit hohen Kosten verbunden – dagegen erfordert HANA PAL lediglich die entsprechende Expertise im Umgang mit den PAL-Funktionen.

WIE FUNKTIONIERT DIE PAL?

HANA bietet ein breites Spektrum an Funktionen, die sich für unterschiedliche Szenarien implementieren lassen (Data Clustering, Klassifizierung, Regression, Zeitreihenprognosen usw.).

In diesem Artikel konzentrieren wir uns auf eine PAL-Funktion: die multiple lineare Regression.

Dabei verwenden wir mit dem Rossmann-Datensatz erneut die Daten, die wir bereits im zweiten Artikel unserer Predictive-Analytics-Reihe herangezogen haben (Eine Anleitung zum eigenen Vorhersagemodell).

Der Datensatz wird von der Rossmann-Drogeriekette auf der Kaggle-Website bereitgestellt. Hier können Einzelpersonen und Unternehmen echte Datensätze hochladen, um Wettbewerbe zu veranstalten oder Datenforscher bei der Weiterentwicklung ihrer Fähigkeiten zu unterstützen.

Für eine detaillierte Ansicht der Codes müsst ihr eine multilineare Regression erstellen. Wir stellen euch zwei Dokumente zur Verfügung, die euch dabei unterstützen:

VORAUSSETZUNGEN UND DATENVERARBEITUNG

Für die nächsten Schritte gehen wir davon aus, dass du SAP HANA STUDIO bereits auf deinem Computer installiert hast. Darüber hinaus benötigst du eine SAP-HANA-Serververbindung, um auf die HANA-Datenbank und -Engine zugreifen zu können. Auch solltest du bereits die aktuellste Version der HANA-Datenbank (2.0) verwenden. Beide Algorithmen in unserem Beispiel werden sowohl von HANA 1.0 SPS 09 als auch von HANA 2.0 SPS 01 unterstützt.

Für unser Szenario haben wir die Daten aus der train.csv und store.csv als Berechnungssicht in unsere HANA-Datenbank importiert.

In der Datei train.csv finden wir neben den Daten zu den Verkaufszahlen und den Verkaufszeitpunkten auch Informationen zu Angebotsaktionen, Kundenzahlen, Wochentagen usw.

Die Datei store.csv enthält Stammdaten zu den einzelnen Filialen, so zum Beispiel die Entfernung zum nächsten Mitbewerber, Art der Filiale und Sortiment der Filiale.

Abbildung 1.1 zeigt die beiden Datentabellen:

Abb. 1.1

In der von uns angelegten HANA-Berechnungssicht bringen wir beide Dateien zusammen, um einen vollständigen Datensatz zu erhalten und sicherzustellen, dass unsere Algorithmen ein genaues Modell für eine präzise Prognose ableiten können (wie in Abb. 1.2 dargestellt).

Abb. 1.2

IMPLEMENTIERUNG DES PAL-ALGORITHMUS

Für unser Szenario implementieren wir die Prognose mithilfe der multiplen linearen Regression.

1. Worum handelt es sich bei der multiplen linearen Regression (MLR)?

Lineare Regression ist ein Verfahren zur Modellierung des linearen Zusammenhangs zwischen einer Variable , üblicherweise als abhängige Variable bezeichnet, und einer oder mehreren Variablen, üblicherweise als unabhängige Variablen bezeichnet, wiederum bekannt als Prädiktionsvektor . In der linearen Regression werden Daten anhand von linearen Funktionen modelliert und unbekannte Modellparameter werden anhand dieser Daten geschätzt. Diese Modelle werden als lineare Modelle bezeichnet.

2. IN 7 SCHRITTEN ZUM EIGENEN MLR-MODELL

Schritt 1: Parameter definieren

Zur Erstellung eines multiplen linearen Modells muss der Algorithmus über zwei Eingabetabellen sowie über vier Ausgabetabellen verfügen und wir müssen die Definition dieser Tabellen anlegen.

Eingabetabellen:

  1. Data – hier enthalten sind die Spalten, die für das Trainieren des Modells verwendet werden. Die Daten müssen eine „Primary Key“-Spalte („ID“) umfassen, die als erste Spalte definiert werden muss. Die zweite Spalte muss die Ziel-/abhängige Spalte sein (die „Y-Variable, die wir vorhersagen). Die übrigen Spalten werden mit den unabhängigen Variablen befüllt (X1, X2, …), die den Algorithmus bei der Erstellung eines exakten Modells unterstützen.
  2. Significance – hier enthalten sind die Koeffizienten des Modells und ihre Werte (je höher der Wert, desto größer sind die Auswirkungen auf das Modell)
  3. Fitted – Die angepassten Werte („Sales” in unserem Fall) des Ziels.
  4. Results – die Ergebnisse des Models (Modellgenauigkeit und Vertrauen).
  5. Exported model – das Modell, das für zukünftige Prognosen verwendet wird.
  6. Control – der Parameter, der festlegt, wie der Algorithmus arbeiten soll (hier können wir die so genannten „Elastic Net Penalties“ aktivieren und entsprechend anpassen, um die Thread-Nummern, das zu lösende Least-Square-Problem usw. festzulegen.)

Schritt 2: Anlegen der Parametertabelle

Nachdem wir die Definitionen für das Modell angelegt haben, müssen wir nun die Tabelle anlegen, die alle Parameter enthält. Wir legen darüber hinaus fest, ob es sich bei den Tabellen um Eingabe- oder Ausgabeparameter handelt (bei den Tabellen Data und Control handelt es sich um Eingabeparameter und bei allen anderen um Ausgabeparameter).

Schritt 3: Anlegen des Wrappers

Der Wrapper erstellt ein Verfahren, das die angegebene Funktion und die zuvor angelegte Parametertabelle verwendet. Dieses Verfahren werden wir in der Folge zur Erstellung des Regressionsmodells anhand unserer Trainingsdaten verwenden.

Schritt 4: Befüllen der „Data“-Tabelle

Zunächst legen wir eine neue Tabelle an, die die gleichen Spalten und Spaltentypen umfasst wie die für die Parametertabelle erstellte Definition.

Schritt 5: Befüllen der „Control“-Tabelle

In der Control-Tabelle legt der Anwender fest, wie der Algorithmus arbeitet. Dies funktioniert ganz ähnlich wie das Erstellen von Einstellungen für dein Programm. Die folgenden „Control“-Einstellungen können festgelegt werden:

a. THREAD_NUMBER -> gibt die Nummer der Threads an (nur wenn Algorithmus 1,5 oder 6 verwendet wird)

b. ALG -> gibt die Algorithmen zur Lösung des Least-Square-Problems an:

  • QR-Zerlegung (numerisch stabil, aber schlägt fehl, wenn A rangdefizient ist)
  • SVD (numerisch stabil und Rangdefizienz stellt kein Problem dar, aber sehr rechenintensiv)
  • Zyklisches Koordinatenabstiegsverfahren zur Lösung durch Elastic Net regularisierter multipler linearer Regression
  • Cholesky-Zerlegung (schnell aber numerisch instabil)
  • Alternating Direction Method of Multipliers zur Lösung durch Elastic Net regularisierter multipler linearer Regression. Dieses Verfahren ist in vielen Fällen schneller als das zyklische Koordinatenabstiegsverfahren und wird empfohlen.

c. VARIABLE_SELECTION -> „0“ um alle Variablen zu berücksichtigen, „1“ Vorwärtsselektion, „2“ Rückwärtsselektion

d. ALPHA_TO_ENTER -> p-Wert für Vorwärtsselektion

e. ALPHA_TO_REMOVE -> p-Wert für Rückwärtsselektion

f. ENET_LAMBDA -> Penalisierte Gewichtung

g. ENET_ALPHA -> Elastic-Net-Mischungsparameter

In unserem Beispiel verwenden wir ALG 6 mit aktivierter Elastic-Net-Penalisierung (eine Methode zur Optimierung des Regressionsmodells) und die Thread-Nummer beträgt 5.

Schritt 6: Ausgabetabellen aufbauen

Jetzt müssen wir nur noch die Ausgabetabellen anhand dieser Definitionen erstellen.

Schritt 7: Das Modell erstellen

Abschließend müssen wir nur noch das Verfahren aufrufen, das wir im Wrapper angelegt haben, die Ergebnisse anzeigen und eine Tabelle anlegen, in der wir die angepassten Werte mit den tatsächlichen Werten vergleichen können.

Ergebnisse

Das erste angezeigte Ergebnis ist die Koeffiziententabelle, aus der wir die Auswirkungen jedes Koeffizienten auf das Model entnehmen können, wobei 0 bedeutet, dass es nahezu keine Auswirkungen auf das erstellte Modell gibt.

Abb. 1.3

Die nächste Ausgabetabelle zeigt uns die angepassten Werte der Trainingsmodelldaten.

Abb. 1.4

Mit der letzten Tabelle erhalten wir die Statistiken des erstellten Modells.

  • R2 – ist die Aussagekraft des Modells, in unserem Fall liegt die Präzision des Modells bei 89,996 %.
  • F – Der F-Wert ist das Verhältnis der mittleren Regressions-Quadratsumme geteilt durch die mittlere Fehlerquadratsumme.
  • AIC – Das Akaike Information Criterion (AIC) ermöglicht Aussagen über die relative Güte statistischer Modelle für einen vorgebenen Datensatz. Anhand einer Sammlung von Modellen für die Daten können so Aussagen über die Güte jedes Modells relativ zu den anderen Modellen getroffen werden. Das AIC stellt also ein Mittel zur Modellauswahl bereit.
  • BIC – Das Bayesian Information Criterion (BIC) oder Schwarz Information Criterion (auch SBC, SBIC) genannt dient als Kriterium für die Modellauswahl aus einer begrenzten Anzahl an Modellen, wobei das Modell mit dem kleinsten BIC bevorzugt wird. Es basiert zum Teil auf der Wahrscheinlichkeitsfunktion und ist eng verwandt mit dem AIC.
  • MQF – Der mittlere quadratische Fehler (MQF) oder mittlere quadratische Abweichung (MQA) eines Schätzers (eines Verfahrens zur Schätzung einer unbeobachteten Menge) misst den Mittelwert der Quadrate der Fehler oder Abweichungen — also den Unterschied zwischen dem Schätzer und dem was geschätzt wird.
  • RMSE – Wurzel aus dem mittleren quadratischen Fehler (Root Mean Square Error)
  • MAE – Mittlerer absoluter Fehler (Mean Absolute Error)
  • MAPE – Der mittlere absolute prozentuale Fehler (Mean Absolute Percentage Error), auch mittlere absolute prozentuale Abweichung (Mean Absolute Percentage Deviation / MAPD) genannt, dient der Messung der Vorhersagegenauigkeit eines Prognoseverfahrens in der Statistik, so zum Beispiel bei der Trendschätzung.

Abb. 1.5

Der Vergleich zwischen den angepassten und den tatsächlichen Werten kann durch ein Diagramm benutzerfreundlicher gestaltet werden. In diesem kann der tatsächliche Wert mit dem vorhergesagten/angepassten Wert wie unten dargestellt über einen festgelegten Zeitraum verglichen werden.

Abb. 1.6

Abb. 1.7

3. ANLEITUNG ZUR ERSTELLUNG VON PROGNOSEN ANHAND DER ERGEBNISSE DES MLR-MODELLS

(1) Parameterdefinition

Ähnlich wie bei der Erstellung unseres Modells müssen wir auch hier eine Parameterdefinition anlegen, jedoch mit dem Unterschied, dass die Datentabelle „type“ die Zielvariable nicht enthalten darf.

(2) Wrapper Prognoseverfahren

Unser erstelltes Verfahren wird mit den Spezifikationen und Strukturen der Parametertabelle gespeist und verwendet die ‘FORECASTWITHLR’-Funktion.

(3) Erstellen der Eingabe- und Ausgabetabelle und Datengenerierung sowie Regressionsspezifikation

Ähnlich wie bei der Modellerstellung legen wir fest, wie die lineare Regressionsprognosefunktion mit den Eingabedaten umgeht. Die Eingabedaten dürfen die Zielspalte nicht enthalten.

(4) Koeffiziententabelle

Die Daten der Koeffiziententabelle müssen aus der Koeffiziententabelle aus den Modellergebnissen übertragen werden.

(5) Aufruf des Prognoseverfahrens

Jetzt müssen wir nur noch das zuvor angelegte Verfahren aufrufen.

(6) Ergebnisanzeige

Zeige die vom Prognosealgorithmus erstellen Vorhersagen an.

Du möchtest mehr über dieses Thema erfahren oder können wir sonst noch etwas für Dich tun? Besuche unseren Blog für regelmäßige Updates. Zögere nicht, uns direkt mit deinen Fragen und deinem Feedback zu kontaktieren. Wir freuen uns auf Deine Kontaktaufnahme!

Quellen: http://sap.com

 

Autor dieses Beitrags
Gellert Peter-Siskovits Associate
Tel.: +49 (0) 7031 714 660 0
E-Mail: cluj@inspiricon.de
Inspiricon-Textanalyse-mit-SAP-HANA_jack-moreh

Wie euch die Textanalyse mit SAP HANA zu wertvollen Erkenntnissen verhelfen kann

Wissen ist Macht, so viel ist klar. Wir sammeln jeden Tag Informationen, teilen sie mit der Welt oder tragen sie in die sozialen Netzwerke. Unser Alltag ist durchdrungen von Informationen. Aber was können wir mit all diesem Wissen anfangen? Zuallererst können wir es in Datenform abspeichern.

Daten lassen sich in zwei Kategorien unterteilen: unstrukturierte und strukturierte Daten.

inspiricon-figure1-unstructured-structured-data

Abbildung 1. Wie sich unstrukturierte und strukturierte Daten unterscheiden.

Was sind unstrukturierte Daten?

Mit dem Begriff „unstrukturierte Daten“ bezeichnet man in aller Regel Informationen, die nicht in klassischen zeilen- oder spaltenbasierten Datenbanken vorgehalten werden. Beispiele hierfür sind Facebook, Twitter oder auch E-Mails.

Die Vorteile strukturierter Daten liegen darin, dass sie sich maschinengestützt identifizieren und verarbeiten lassen. Sind die Daten erst einmal gespeichert, lassen sie sich viel einfacher für bestimmte Zwecke durchsuchen, zusammenstellen und filtern.

Was sind strukturierte Daten?

Daten, die sich in einem festgelegten Feld innerhalb eines Datensatzes oder einer Datei befinden, werden als strukturierte Daten bezeichnet. Ein Beispiel hierfür sind Datenbanken.

Textanalyse versetzt uns also in die Lage, unstrukturierte Daten in strukturierte Daten zu verwandeln und diese im Anschluss zu analysieren.

Was verstehen wir unter Textanalyse?

Mit dem Begriff Textanalyse beschreiben wir das Zusammenspiel aus Verfahren aus der Linguistik, Statistik und dem maschinellen Lernen, die den Informationsgehalt von Textquellen zum Zwecke der explorativen Datenanalyse, Forschung oder Untersuchung modellieren und strukturieren.

Die SAP-HANA-gestützte Textanalyse setzt auf umfassende linguistische und statistische Verfahren, um unstrukturierte Texte zu extrahieren und klassifizieren und so in Entitäten und Domänen umzuwandeln.

Mit der SAP-HANA-Plattform erhaltet ihr wertvolle Einblicke aus euren unstrukturierten Textdaten. Die Plattform gibt euch Funktionen für Suche, Textanalyse und Text Mining in unstrukturierten Textquellen an die Hand.

In der Textanalyse kommt eine Reihe von Verfahren zum Einsatz, um bestimmte Zeichenfolgen zu finden oder linguistische Suchen durchzuführen.

  • Volltextindizierung:
    Ein Volltextindex ist eine besondere Form des Token-basierten funktionalen Index, der über das Volltextmodul für SQL Server erstellt und gepflegt wird.
  • Volltextsuche:
    Die Volltextsuche ist auf linguistische (sprachbasierte) Suchen in Texten und Dokumenten in Ihrer Datenbank ausgelegt.
  • Unscharfe Suche (Fuzzy Search):
    Bei der unscharfen Suche handelt es sich um ein Verfahren zum Auffinden von Zeichenfolgen, die annähernd einem bestimmten Muster entsprechen. Bei diesem Suchtyp werden auch dann Treffer gefunden, wenn der Benutzer Rechtschreibfehler macht oder nur unvollständige Wörter als Suchanfrage verwendet.

In diesem Artikel beschäftigen wir uns mit der Volltextindizierung.

Volltextindizierung: Tabelle $TA

  • Durch die Erstellung eines Volltextindexes mit dem Parameter TEXT ANALYSIS ON wird eine Tabelle mit dem Namen $TA_<indexname> angelegt, die linguistische oder semantische Analyseergebnisse enthält.
  • Die Menge der Spalten in der Tabelle mit dem Präfix $TA bleibt unabhängig von der mit dem Volltextindex verwendeten Textanalysekonfiguration immer gleich:

inspiricon-figure2-ta-table

Abbildung 2. Beispielhafte Darstellung einer TA-Tabelle

  • Schlüsselspalten aus Quelltabelle (ID):
    Die ersten Spalten in der Tabelle $TA sind eine direkte Kopie der Schlüsselspalten aus der Quelltabelle.
  • TA_RULE:
    Die Regel, über die Ausgabe erstellt wurde. In aller Regel handelt es sich hierbei um LXP für die linguistische Analyse bzw. um Entity Extraction für die Entitäten- und Faktenanalyse.
  • TA_COUNTER:
    Eine eindeutige fortlaufende Nummer für jeden aus dem Dokument extrahierten Token.
  • TA_TOKEN:
    Die aus dem Dokument extrahierten Begriffe, Fakten oder Entitäten.
  • TA_LANGUAGE:
    Die Sprache, in der das Dokument verfasst wurde.
  • TA_TYPE:
    Die Art des Tokens. In der linguistischen Analyse handelt es sich hierbei um die Wortart. In der semantischen Analyse bezeichnet dies den Entitätstyp oder den Fakt. (’noun, ‚StrongPositiveSentiment‘, ‚Person‘)
  • TA_NORMALIZED:
    Die normalisierte Version des Tokens. Die Beugung wird beibehalten, Großschreibung und diakritische Zeichen werden jedoch entfernt. Im Falle der Extraktion von Entitäten ist die Spalte null.
  • TA_STEM:
    Die Stammform des Tokens. Der Eintrag in diesem Feld ist ungebeugt und normalisiert. Sind Token und Stammform identisch ist diese Spalte null. Im Falle der Extraktion von Entitäten ist die Spalte ebenfalls null.
  • TA_PARAGRAPGH:
    Der Absatz im Dokument, der den Token enthält.
  • TA_SENTENCE:
    Der Satz im Dokument, der den Token enthält.
  • TA_CREATED_AT:
    Erstellungszeitpunkt des Datensatzes.
  • TA_OFFSET:
    Der Zeichenoffset vom Dokumentenanfang an.
  • TA_PARENT:
    Der TA_COUNTER-Wert vom übergeordneten Element dieses Token.

Integrierte Konfigurationen

SAP HANA verfügt über sieben integrierte Konfigurationen, die der Analyse des Verhaltens und der Textausgabe dienen:

  • LINGANALYSIS_BASIC:
    Hierbei handelt es sich um die grundlegendste Form der linguistischen Analyse. Dabei wird zwar die Datei mit Token versehen, die Normalisierung und Zurückführung in die Stammform entfallen jedoch, so dass die Spalten für TA_NORMALIZED und TA_STEM leer bleiben.
  • LINGANALYSIS_STEMS:
    Bei dieser Konfiguration erfolgt für die Token die Normalisierung und die Zurückführung in die Stammform, die Felder TA_NORMALIZED und TA_STEM werden also befüllt.
  • LINGANALYSIS_FULL:
    Hierbei wird eine vollständige linguistische Analyse durchgeführt, so dass alle Spalten in der Tabelle $TA befüllt werden.
  • EXTRACTION_CORE:
    Hierbei werden Entitäten aus dem Text extrahiert. Dabei kann es sich zum Beispiel um Menschen, Orte oder URLs handeln.
  • EXTRACTION_CORE_VOICEOFCUSTOMER:
    Hierbei werden Entitäten und Fakten extrahiert, um positive und negative Stimmungen im Zusammenhang mit den Token zu identifizieren.
  • EXTRACTION_CORE_ENTERPRISE:
    Dieses Verfahren dient der Extraktion von Daten für Unternehmenszwecke, so zum Beispiel Daten zu Fusionen, Übernahmen, organisatorischen Veränderungen und Produktveröffentlichungen.
  • EXTRACTION_CORE_PUBLIC_SECTOR:
    Hierbei werden sicherheitsrelevante Daten über öffentliche Personen, Ereignisse und Organisationen extrahiert.

Erstellen einer Tabelle und eines Index

Im Folgenden findet ihr ein Praxisbeispiel für die EXTRACTION_CORE_ VOICEOFCUSTOMER-Konfiguration zum Identifizieren von Stimmungen (positive oder negative Gefühle):

Zunächst müssen wir eine Tabelle erstellen, Werte einfügen und einen Index erstellen.

Öffnet dazu eine SQL-Konsole und gebt den folgenden Befehl ein:

inspiricon-figure3-create-table

Abbildung 3. Tabelle erstellen

 inspiricon-figure4-create-Index-insert-values

Abbildung 4. Index erstellen und Werte eingeben

Die erstellte Tabelle sieht folgendermaßen aus:

inspiricon-figure5-created-table

Tabelle 5. Tabelle

Im letzten Schritt erhalten wir die Textanalyse. Wie ihr sehen könnt, erscheinen „likes“ und „enjoys“ als „WeakPositiveSentiment“, also als schwaches positives Gefühl.

inspiricon-figure6-text-analysis

Abbildung 6. Textanalyse

Du willst mehr erfahren? Wir halten Dich über unseren Blog auf dem Laufenden. Weiterhin freuen wir uns jederzeit über Deine Kontaktaufnahme!

Hinweis: Dieser Artikel wurde angeregt durch diesen Blogartikel.

Autor dieses Beitrags
Adelina Ramona Popa und
Lucian Tomeac
Associates SAP BI
Tel.: +49 (0) 7031 714 660 0
E-Mail: cluj@inspiricon.de
Anleitung zum eigenen Vorhersagemodell

Eine Anleitung zum eigenen Vorhersagemodell

Was spricht für diese Lösung?

Wie schon im ersten Artikel aus unserer Predictive-Analytics-Blogreihe angesprochen, müssen wir als Analysten Unternehmen mit wichtigen Erkenntnissen versorgen – Erkenntnisse, die Entscheidungen unternehmensweit optimieren und so das Kundenerlebnis verbessern, Faktoren identifizieren, die sich auf die Geschäftsentwicklung auswirken, und versteckte Risiken offenlegen.

Um ein einheitliches Modell zur Vorhersage des optimalen Geschäftsnutzens aufbauen zu können, müssen wir jedoch eine ganze Reihe von Schritten abarbeiten. Dabei gilt es zunächst, die Daten zu bereinigen und umzuwandeln und sich für die passenden Algorithmen zu entscheiden. Hinzu kommen das Training, die Optimierung und das Testen unseres Vorhersagemodells, bis es schließlich so weit ist, dass es auf die Geschäftsprozesse angewendet werden kann.

Sobald man aber denkt, dass man sich mit etwas Neuem beschäftigen kann, ändern sich unsere Daten wieder und unser Vorhersagemodell muss entsprechend aktualisiert werden. Zudem benötigt man für andere Geschäftsentscheidungen wieder ganz andere Vorhersagemodelle.

Wie können wir am Ball bleiben?

Die Antwort lautet SAP BusinessObjects Predictive Analytics. Wir müssen es nur mit Daten füttern und es automatisiert für uns die Modellentwicklung, wobei es die Informationen für jede Entscheidung generiert und testet. Wir können die Modelle unternehmensweit einsetzen, immer genau dort, wo sie benötigt werden, um jederzeit die besten Entscheidungen zu treffen.

Ein weiterer wichtiger Aspekt, der mit dieser Lösung einhergeht, ist die Zeitersparnis: Ergebnisse liegen nicht erst nach Wochen oder sogar Monaten vor, sondern innerhalb weniger Tage. Und sobald eine Aktualisierung der Modelle anhand unserer neuesten Daten ansteht, stellt sie auch das sicher, wobei Relevanz der Modelle stets gegeben ist.

Ein Modell erstellen und Vorhersagen ableiten

In diesem Artikel erstellen wir ein Vorhersagemodell, das dann später für die weiteren Vorhersagen zum Einsatz kommt. Ich zeige euch, wie einfach es ist, ein erfolgreiches Modell auf Grundlage eines aussagekräftigen Datensets zu erstellen.

Angefangen habe ich mit einem öffentlichen Datensatz von Kaggle; der ideale Einstieg für alle, die sich mit maschinellem Lernen beschäftigen möchten. Dabei habe ich mich für den Datensatz Rossman Store Sales entschieden, da dieser die historischen Verkaufsdaten von rund 1.115 Rossmann-Filialen bereitstellt.

Den Datensatz finden Sie unter folgendem Link: https://www.kaggle.com/c/rossmann-store-sales.

Die Aufgabe bestand darin, die „Verkaufszahlen“ für jede Filiale für ein bestimmtes Jahr zu prognostizieren (z. B. 2015).

8 Schritte bis zum eigenen Vorhersagemodell

Schritt 1
Gehen wir davon aus, dass SAP HANA Studio sowie SAP BusinessObjects Predictive Analytics bereits auf deinem Computer installiert sind. Darüber hinaus benötigst du eine SAP-HANA-Serververbindung, um auf die HANA-Datenbank und -Engine zugreifen zu können.

Schritt 2
Sammle die Daten und lade die CSV-Dateien in die SAP-HANA-Datenbank. Bei der Erstellung unseres Modells kamen die Datei store.cvs mit den Informationen zu den Filialen sowie die Datei train.csv mit den historischen Daten einschließlich der Verkaufszahlen (Abb. 1.1) zum Einsatz.

SAP HANA Database

Abb. 1.1

Schritt 3
Erstelle eine Berechnungssicht für jeden Datenset (Abb. 1.2). Bringe diese dann in einer weiteren Berechnungssicht zusammen, die dann später im Predictive-Analytics-Tool verwendet wird. Das endgültige Schema der Sichten findest du in Abbildung 1.3.

Calculation View

Abb. 1.2

Final View

Abb. 1.3

Schritt 4
Weiter geht’s. Nach dem Öffnen von SAP Predictive Analytics findest du das Toolset Expert Analytics (Abb. 1.4). Bei Expert Analytics handelt es sich um ein Tool für statistische Analysen und Data Mining, mit dem du deine eigenen Vorhersagemodelle erstellen kannst, anhand derer du wiederum Prognosen über zukünftige Ereignisse stellen kannst.

Expert Analytics Toolset

Abb. 1.4

Schritt 5
Füge ein neues Datenset hinzu. Dazu kannst du wie in Abbildung 1.5 gezeigt als Quelle die Option „Download aus SAP HANA“ auswählen. So werden die Daten lokal auf deinem Rechner gespeichert und auch das Modell wird lokal ausgeführt. Alternativ kannst du auch die Option „Verbindung mit SAP HANA“ nutzen. Wie du sicher schon erraten hast, werden die Daten und das Modell dann in HANA gespeichert bzw. ausgeführt.

Add new dataset

Abb. 1.5

Schritt 6
Stelle mit deinen Anmeldedaten wie ein Abbildung 1.6 gezeigt eine Verbindung zu deinem SAP-HANA-Server her.

Connection to SAP HANA

Abb. 1.6

Schritt 7
Suche die zuvor erstellte Sicht und klicke auf „Erstellen“ (Abb. 1.7).

Create

Abb. 1.7

Schritt 8
In der Designer-Sicht stellen wir unser Prognoseschema zusammen (Abb. 1.8). Dazu beginnen wir unter Stichprobe mit der Auswahl der Daten (und beschränken uns dabei auf die Daten aus 2015). Im nächsten Schritt weisen wir in der Partitionskomponente die Trainings-, Test- und Validierungsdaten zu. Zur Klassifizierung nutzen wir den linearen Auto-Regression-Algorithmus, in dem die Variablen linear von den vorausgegangenen Werten und einem stochastischen Term abhängen. Die letzte Komponente Modellstatistik dient dann der Anzeige der Ergebnisse.

Designer Screen

Abb. 1.8

Ergebnisse
Nach dem Ausführen des Modells erhalten wir das folgenden Ergebnis (Abb. 1.9). Wie erwartet stimmt der grün markierte prognostizierte Wert nahezu mit dem tatsächlichen Wert in blau überein. Im Reiter Übersicht finden wir die Algorithmenübersicht sowie die Verteilung über die Trainings-, Test- und Validierungsdatensets (Abb. 2.0).

Result

Abb. 1.9

Result

Abb. 2.0

Fazit

Mit SAP BusinessObjects Predictive Analytics kannst du aus komplexen, in deinen Daten verborgenen Mustern konkrete und zielführende Erkenntnisse gewinnen – Erkenntnisse, die wiederum die Kundenbindung, die Verkaufszahlen und die operative Entwicklung positiv beeinflussen und Risiken im ganzen Unternehmen reduzieren. Und dadurch lassen sich natürlich unter dem Strich massive Verbesserungen im Geschäftsergebnis erzielen. Dabei kann all das hochautomatisiert erfolgen, was es umso leichter macht, dauerhaft Spitzenleistungen zu gewährleisten und viele hundert Modelle zu verwalten.

Darum möchte ich dir dringend ans Herz legen, mit SAP Business Objects Predictive Analytics ganz neue Wege in deinem Digital Enterprise zu beschreiten.

Verpasse nicht den letzten Artikel aus unserer Predictive Analytics-Blogreihe, welcher sich mit den nativen Predictive-Analytics-Möglichkeiten in HANA befasst. Falls du noch Fragen hast, kannst du dich gerne an uns wenden! Wir helfen dir gerne weiter.

Quelle: https://www.sap.com/germany/assetdetail/2017/05/9a00f0bc-b87c-0010-82c7-eda71af511fa.html

Autor dieses Beitrags
Andrei Orbai Associate SAP BI
Tel.: +49 (0) 7031 714 660 0
E-Mail: cluj@inspiricon.de