CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Hybride Planung in wenigen Schritten

Der hybride Ansatz kombiniert unterschiedliche Wege für das Lesen und das Schreiben der Daten. Sie werden aus OLAP gelesen und relational geschrieben. Der Ansatz verwendet dafür nicht die bekannte Rückschreibefunktionalität von SQL Server Analysis Services. Es werden stattdessen spezielle relationale SQL-Objekte verwendet, um die Dateneingabe zu speichern.
Im Folgenden wird erläutert, wie eine Planungsanwendung mit dem hybriden Ansatz erstellt wird.

Datenmodell

Das Datenmodell muss folgende Voraussetzung erfüllen: Die Kennzahlen müssen vom Datentyp „float“ sein, um Rundungsdifferenzen bei der Nutzung der Splashingfunktionalität zu vermeiden (Spalte „Type of measure“).

Definition der Kennzahlen im DeltaMaster Modeler

Abbildung 1: Definition der Kennzahlen im DeltaMaster Modeler

SQL-Objekte

Erstellung

Die SQL-Objekte werden durch die Ausführung eines SQL-Skripts erstellt. Das SQL-Skript befindet sich aktuell hier: „S:\Consulting\interne Projekte\Planung 2.0\Prototype Generierung Hybridlogik_Vxx.sql“ (zum Zeitpunkt der Dokumentation aktuelle Versionsnummer ist V19).
Vor der Ausführung des Skripts müssen drei Parameter angepasst werden: @FactID, @DoRecreateWBTable und @TransactionLevel. Die Parameter finden sich am Anfang des Skripts (Version 19), und zwar in den Zeilen 30, 33 und 37.

  • @FactID entspricht der ID der Planungs-MeasureGroup; für das aktuelle Beispiel 1

  • @DoRecreateWBTable kann die Werte 0 oder 1 enthalten. Wenn der Wert gleich 1 ist, wird die Eingabetabelle bei Skriptausführung neu erstellt. Der Wert kann auf 0 gesetzt werden, um zu verhindern, dass bereits eingegebene Plandaten gelöscht werden.

  • @TransactionLevel ist ein binärer Parameter und legt die Transaktionsoptionen fest. Die Optionen 2 und 4 führen zur Erstellung globaler Transaktionsobjekte, wie Logging-Objekte und Transaktionsprozeduren. Die Option 1 erstellt Transaktionsobjekte für die aktuelle Planungs-MeasureGroup, wie eine Rollback-Tabelle. Die Option 8 ist optional und erstellt eine Archive-Tabelle, in der alle Einträge gesichert werden. Die gewünschten Optionswerte müssen einfach summiert übergeben werden. Der Wert 15 ist der Standardwert und ist die Summe aller verfügbaren Optionen.

Bedeutung der erzeugten SQL-Objekte

Nach der Ausführung des Skripts werden verschiedene Objekte (Tabellen, Views und Prozeduren) erstellt. Im Folgenden werden sie kurz erklärt.

  • Die eingegebenen Daten werden in der Tabelle T_WriteBackSQL_FACT_<MeasureGroupID>_<MeasureGroupName> gespeichert.

  • Es wird für jede Dimension der MeasureGroup eine View sowie eine materialisierte Tabelle erstellt. Die Tabellen enthalten die Dimensionselemente Dimensionsebenen (aller Hierarchien) und werden in der Rückschreiblogik im Wesentlichen für das Splashen verwendet.

  • Die View V_WriteBackSQL_FACT_01_Sales ist für die Anbindung der OLAP Partition notwendig. Hierin werden die Spalten an die Struktur der normalen T_FACT-Tabellen angepasst und beispielsweise die zusätzlichen Transaktionsspalten ausgeblendet. Andernfalls wäre die Tabelle nicht in den Data Tools sichtbar, wenn manuell versucht wird eine Partition an einer MeasureGroup anzubinden.

  • Die Prozedur P_WriteBack_FACT_01_Sales enthält die Rückschreiblogik. Hier wird der Datensatz bzw. werden die Datensätze (bei Splashing) bestimmt und in der Tabelle T_WriteBackSQL_FACT_01_Sales gespeichert.

  • Die Transaktionslogik verwendet folgende Objekte. Sie werden gemäß des Parameterwertes für @TransaktionsLevel erstellt (siehe Punkt 2.1)

  

 

OLAP-Rückschreibe-Partition erstellen

Damit die relationalen Daten auch in der OLAP-Datenbank sichtbar sind, ist eine neue Partition an der MeasureGroup notwendig. Diese kann über die XMLA-Schnittstelle des Modelers automatisch hinzugefügt werden (siehe DeltaMaster Modeler Version 212 – ReleaseNotes, Punkt 2.19). Zur besseren Verständlichkeit wird hier der manuelle Prozess im BIDS veranschaulicht:

  • Die Partitionsquelle muss in der Datenquelle „DeltaMaster_DS“ gesucht werden und dort die View V_WriteBackSQL_FACT_01_Sales ausgewählt werden. Alternativ kann die View auch zunächst der Datenquellensicht hinzugefügt werden und anschließend von dort („DeltaMaster_DSV“) selektiert werden.

Auswahl der Partitionsquelle

Abbildung 2: Auswahl der Partitionsquelle

  • Als nächstes muss der Speichermodus definiert werden. Damit die direkt in der SQL-Tabelle erzeugten Datensätze auch sichtbar sind, muss dies zwingend ROLAP sein.
  • Dann stellt sich die Frage wie die Aktualisierungen der Daten ohne Cube-Process im Würfel ankommen. Hier gibt es aktuell zwei bekannte Möglichkeiten: RealTimeOLAP und Proactive Caching.

Die RealTimeOLAP-Option wird beim Aufbauen der OLAP-Verbindung in einem erweiterten Parameter gesetzt. Damit können die ROLAP Partitionen in Echtzeit gelesen werden. Der Nachteil ist, dass es sich um eine globale Einstellung handelt und diese für alle ROLAP-Partitionen der Datenbank wirkt. Das kann zu Performanceeinbußen führen. Vorteilhaft ist, dass nicht bei jedem Rückschreibevorgang das MDX-Script neu gelesen wird (wie dies bei anderen Optionen der Fall ist). Die Eigenschaft kann in der DeltaMaster-Anwendung im Verbindungsdialog gesetzt werden (siehe auch Punkt 4).

Einstellung der Speichermodus für RealTime-OLAP

Abbildung 3: Einstellung der Speichermodus für RealTime-OLAP

Das „Proactive Caching“ ist eine Eigenschaft einer MeasureGroup-Partition und kann pro Partition getrennt gesetzt werden. Dabei handelt es sich um eine zusätzliche Option zum Speichermodus, dieser wird je nach Konfiguration des Proactive Cachings auch mit angepasst. In unserem Fall benötigen wir die möglichst direkte Aktualisierung der Daten. Daher wählen wir der Speichermodus Echtzeit-ROLAP (im Englischen „Realtime-ROLAP“ – nicht zu verwechseln mit dem oben genannten RealTime-OLAP – ohne R).
Der Speichermodus Echtzeit-ROLAP kann wie folgt erklärt werden:

„OLAP is in real time. Detail data and aggregations are stored in relational format. The server listens for notifications when data changes and all queries reflect the current state of the data (zero latency)…“

Um den Speichermodus zu definieren, müssen die Partition-Speichereinstellungen geöffnet und dort Echtzeit-ROLAP ausgewählt werden.

Einstellung der Speichermodus für Proactive Caching

Abbildung 4: Einstellung der Speichermodus für Proactive Caching

Durch Klicken auf „Optionen“ können auf der Registerkarte „Allgemein“ die Cacheeinstellungen definiert werden, zum Beispiel die Aktualisierungshäufigkeit des Caches. In unseren Fall wählen wir die Aktualisierung mit Latenzzeit gleich 0.

Cacheeinstellungen

Abbildung 5: Cacheeinstellungen

Anschließend können die Benachrichtigungen konfiguriert werden. Als Benachrichtigungsmethode ist „SQL Server“ festzulegen und die Tabelle T_WriteBackSQL_FACT_01_Sales als Nachverfolgungstabelle auszuwählen. Dies führt dazu, dass der proaktive Cache jedes Mal aktualisiert wird, wenn sich in dieser Tabelle etwas ändert.

Einstellung der Benachrichtigungen

Abbildung 6: Einstellung der Benachrichtigungen

  • Zuletzt muss der Cube bzw. die betreffende Partition nochmal verarbeitet werden.

DeltaMaster Planungsanwendung

Die Analysesitzung sollte folgende Einstellungen erhalten:

  • Nur für RealTime-OLAP, muss die Eigenschaft „RealTimeOLAP=TRUE“ in der Anmeldung zur OLAP-Datenbank unter „Weitere Optionen“ hinzugefügt werden. Für Proaktives Caching bleibt „Erweiterte Eigenschaften“ leer.

Erweiterte Eigenschaften für RealTime-OLAP

Abbildung 7: Erweiterte Eigenschaften für RealTime-OLAP

  • Da wir relational rückschreiben, muss das relationales Modell angebunden werden
  • Weiterhin müssen die Planungsfunktionen aktiviert sein
  • Dort ist das Rückschreibverfahren umzustellen auf: „per modellspezifischer, gespeicherter Prozedur in relationaler Datenbank“. Als Verbindungszeichenfolge verwendet DeltaMaster automatisch die identische Verbindung zum relationalen Modell. Dies ist ggfs. noch anzupassen.

Dateneingabe-Einstellungen in Planungsanwendung

Abbildung 8: Dateneingabe-Einstellungen in Planungsanwendung

Ergebnis

In folgenden Bericht wird ein Umsatz von 700 EUR für die Produktgruppe „Arcade“ in Januar 2016 für Deutschland geplant.

Umsatzplanung

Abbildung 9: Umsatzplanung

Die Eingabe ruft die Prozedur P_WriteBack_FACT_01_Sales, sowie die Transaktionsprozeduren P_WriteBack_Begin und P_WriteBack_Commit auf.

Aufruf der Prozeduren

Abbildung 10: Aufruf der Prozeduren

Als Ergebnis werden acht Datensätze in der Tabelle T_WriteBackSQL_FACT_01_Sales erzeugt.

Erzeugte Datensätze in T_WriteBackSQL_FACT_01_Sales

Abbildung 11: Erzeugte Datensätze in T_WriteBackSQL_FACT_01_Sales