Performance Analyse mit und ohne transitive Attribute
Aufgabenstellung
Die Datenmodellierung ist im SAP BW on HANA Umfeld durch die Vielfältigkeit und zahlreiche technische Möglichkeiten zur Umsetzung mit einigen Herausforderungen verbunden. Bei der Konzeption ist stets das Ziel, die bestmögliche Performance zu erzielen. In meinem PoC zeige ich Ihnen, wie sich die Nutzung von transitiven Attributen im Datenmodell auf die Performance im SAP BW System auswirkt.
Transitive Attribute
Die Transitivität ist eine Relation und wird in der Mathematik wie folgt definiert. Ein Element A steht in einer transitiven Beziehung zu einem Element C, wenn das Element A eine Relation zu einem anderen Element B hat, welches eine Beziehung zum Element C besitzt.
Als Transitives Attribut bezeichnet man ein Merkmal eines Objektes (Beispielsweise eine Verkaufsorganisation eines Werks), welches wiederum auch nur ein Merkmal eines übergeordneten Objektes ist (Beispielsweise das Buchungskreis der Verkaufsorganisation), auf das man im Reporting aber direkt zugreifen möchte.
Der Vorteil von transitiven Objekten liegt in der Ersparnis der redundanten physischen Datenablage gegenüber von direkten Navigationsattributen. Die Navigationsattributen werden in der Regel genutzt, um über bestimmte Merkmale im Reporting navigieren zu können.
Um diese Attribute eines 2nd Levels direkt im BW Reporting verfügbar zu machen, gab es zwar im klassischen BW eine Lösung (1) aber es lief in konventionellen Infoprovidern (Standard-DSO, CUBE) nicht performant und die Abbildung transitiver Attribute war fehleranfällig und aufwendig. Ab der Version BW 7.5 SP4 ist es möglich, transitive Attribute direkt via Einstellung in Eclipse / HANA Studio am InfoObjekt zu designen. Eine Projektaufgabe war nun die Analyse, ob diese transitiven Attribute auch performant in neuen Objekten genutzt werden können.
Aktivieren von transitiven Attributen
Um die Aktivierung der transitiven Attribute zu verdeutlichen, erstellten wir ein Composite Provider, bei dem das Werk 0PLANT als InfoObjekt enthalten ist. Das Werk 0PLANT hat das Navigationsattribut Verkaufsorganisation 0SALESORG, welches wiederum ein Navigationsattribut Buchungskreis 0COMP_CODE besitzt.
Damit Sie in unserem Beispiel den 0COMP_CODE als transitives Attribut an 0PLANT aktivieren zu können, öffnen Sie das InfoObject 0PLANT und gehen Sie zur Registerkarte „Attribute“. Klicken Sie mit der rechten Maustaste auf das Attribut, an welchem Sie das transitive Attribut auswählen wollen. Ein Kontextmenü wird angezeigt. Klicken Sie auf „Transitive Attribute pflegen“ (s. Abbildung 2)
Eine Liste mit allen Attributen des ausgewählten (Nav)-Attributs LVl 1 wird angezeigt. Wählen Sie das gewünschte InfoObject als transitives Attribut aus – in diesem Beispiel den Buchungskreis 0COMP_CODE – und klicken Sie dann auf die Schaltflächen „Gleich“ und „OK“ (s. Abbildung 3)
Der Buchungskreis wird jetzt in der Attributstabelle angezeigt. Der Wert „true“ in der Spalte „Transitive Attribute“ gibt an, dass dies kein reguläres Attribut, sondern ein transitives ist.
Aktivieren Sie das Kontrollkästchen Navigationsattribut.
Wenn Sie ein transitives Attribut hinzufügen möchten, das denselben Namen wie ein bereits vorhandenes Attribut hat, wird eine Fehlermeldung angezeigt. In diesem Fall müssen Sie die Schaltflächen „Sonstige“ (dies ordnet das Attribut einem anderen InfoObject zu) oder „Neu“ (dies erstellt ein neues InfoObject als Referenz auf das ursprüngliche InfoObject) verwenden.
Transitive Attribute und Performance –PoC:
Um den Einfluss der Aktivierung eines transitiven Attributes auf die Performance ermitteln zu können, haben wir zwei Queries, einmal mit und einmal ohne transitives Attribut (hier haben wir die eigentlich transitiven Attribute direkt als NavAttribut an das InfoObjekt gehangen2), erstellt.
In der Teststellung haben wir iterativ bis zu ca. 10 Mio. Records an Daten in das Datenmodell geladen. Bei jeder Datenbeladung haben wir dann über das Statistics Data for Query Runtime die Ausführungsdauer auf der Datenbank, das sogenannte Event ID 9000, ermittelt.
Um einen Vergleich zwischen Query 1 (ohne transitive Attribute) und Query 2 (mit transitiven Attributen) darstellen zu können, haben wir einen Graphen mit einer X-Achse als Anzahl Datensätze und einer Y-Achse als Ausführungsdauer in Millisekunden generieren lassen.
Die gesamte Ausführungsdauer (Abbildung 3) bezeichnet die Summation der Ausführdauer aller Aktionen (Events im Statistics Data for Query Runtime). Das Event ID 9000 (Abbildung 4) misst nur die reine Ausführdauer auf der Datenbank und somit wird die Zeit im Data Manager gemessen, sobald dieser aus dem OLAP aufgerufen wird.
Fazit
Beide Analysen zeigen annähernd gleiche Verläufe im zeitlichen Ablauf. Die Anzahl der Datensätze hat auf die Ausführdauer bei beiden Queries im Vergleich kaum Einfluss gezeigt.
Die Ergebnisse unseres PoC haben gezeigt, dass die Nutzung von Transitiven Attributen keine negative Auswirkung auf der Performance hat, sogar gering schneller ist. Wir sind der Meinung, dass das daran liegt, dass transitive Attribute nun per Eclipse Modelling direkt auf die HANA heruntergedrückt werden, wobei klassische Nav-Attribute noch über den Application Layer aufgelöst werden.