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

OLAP-Verarbeitung zwischendurch

In diesem Blogbeitrag geht es um die flexible Verarbeitung von Analysis-Server-Objekten aus TSQ-Prozeduren heraus.

Immer wieder gibt es Anforderungen, außerhalb der nächtlichen Standardverarbeitung gezielt Stammdaten zu ergänzen und per „Knopfdruck“ in der OLAP-Anwendung sicht- und nutzbar zu machen. Gerade in Planungssystemen bedarf es häufiger kurzfristig einer neuen Produktnummer, einer neuen Kostenstelle oder eines neuen Kostenträgers, die sofort zur Nutzung zur Verfügung stehen sollen.

Die Vorbereitung gliedert sich in zwei Schritte, die notwendig sind, um später aus DeltaMaster den Prozess starten zu können. Einmal die technische Voraussetzung zum Ausführen beliebiger XMLA-Scripte im Analysis Server und zum anderen die Möglichkeit zur Eingabe der neuen Elemente.

Schauen wir uns das Thema genauer an.

Technische Vorbereitung

Der Zugriff auf den Analysis Server (AS) wird über einen sogenannten Verbindungsserver (Linked Server) hergestellt. Damit ist es unter anderem möglich, eine Verbindung zu anderen Servern herzustellen und dort Abfragen oder Code auszuführen.

Zunächst muss im SQL-Management Studio eine Verbindung zum SQL-Server, auf dem die DeltaMaster-Datenbank liegt, hergestellt werden. Dann unter „Serverobjekte\Verbindungsserver“ per Rechtsklick das Menü öffnen und „Neuer Verbindungsserver“ auswählen.

VerbindungsserverAbbildung 1: Verbindungsserver

Der Name ist beliebig, als Anbieter den passenden Analysis-Services-Eintrag und als Datenquelle der verwendete AS (hier localhost).

Einstellungen allgemeinAbbildung 2: Einstellungen allgemein

Die Einträge unter Sicherheit sind mit der IT des Kunden abzustimmen und werden maßgeblich von der Art des späteren Aufrufs der Verarbeitung beeinflusst.

Untenstehende Serveroptionen schließen die Konfiguration des Verbindungsservers ab.

ServeroptionenAbbildung 3: Serveroptionen

Nach erfolgreicher Verbindung sind unter „Serverobjekte\Verbindungsserver\Servername\Kataloge“ die einzelnen OLAP-Datenbanken sichtbar.

AS-KatalogAbbildung 4: AS-Katalog

Bereitstellen der Codebausteine

Nach der grundlegenden Verbindung zum AS erstellen wir eine TSQL-Prozedur, die in der Lage ist, beliebigen XMLA-Code gegen den AS auszuführen. In die hier verwendeten Variable @XMLACode wird später der vom AS generierte Code eingefügt.

Generische TSQL-Prozedur für XMLA-CodeAbbildung 5: Generische TSQL-Prozedur für XMLA-Code

DeltaMaster ETL bietet die Möglichkeit, für die relationale Pflege einer Dimension die notwendigen Insert/Update/Delete-Prozeduren automatisch zu erstellen. Es reicht eine Einstellung im Bericht Levels unter „Create Relational Maintenance“.

Einstellungen DeltaMaster ETLAbbildung 6: Einstellungen DeltaMaster ETL

Beim nächsten Ausführen von „Create relational schema“ über die ETL.exe werden die Prozeduren, die Pflegetabelle „T_S_Produkt“ und eine View „V_S_Produkt“ für die Pflegeanwendung erzeugt.

Ich habe lediglich noch eine Sicherheitsabfrage eingefügt, ob der Produkt-Key beim Insert/Update bereits vorhanden ist.

P_Dim-Prozeduren aus DeltaMaster ETLAbbildung 7: P_Dim-Prozeduren aus DeltaMaster ETL

Nun fehlt noch der XMLA-Code zum Prozessieren der Dimension und der Measuregroups, die diese Dimension verwenden. Das Skript generiert uns der AS praktischerweise selbst.

Anmelden am AS, Auswahl der OLAP-Datenbank, Dimension markieren und dann mit Rechtsklick Verarbeiten auswählen und auf Skript klicken.

Skript Verarbeitung Dimension ProduktAbbildung 8: Skript Verarbeitung Dimension Produkt

Das gleiche Spiel mit der Measuregroup und wieder Verarbeiten auswählen und auf Skript klicken.

Skript-Verarbeitung-MeasuregroupAbbildung 9: Skript Verarbeitung Measuregroup

Damit haben wir alle notwendigen Code-Bausteine und fügen die einzelnen Bestandteile in die generische Prozedur aus Abbildung 5 ein. Aus Platzgründen wird hier nur der Hauptteil angezeigt.

Erweitertes-Skript (Auszug)Abbildung 10: Erweitertes Skript (Auszug)

Pflege im DeltaMaster

Als Basis dient die Vertriebsplanung des Hidden Champions im Bereich hochwertiger Bürostühle, der Chair AG.

Wir erstellen eine relationale Eingabeanwendung für die neuen Produkte, in der wir einen SQL-Bericht anlegen und dort die Dateneingabe freischalten. Angebunden wird hier die vom DeltaMaster ETL erzeugte View.

PflegeberichtAbbildung 11: Pflegebericht

Der Key (ProduktID) und der dazugehörige Name (ProduktBEZ) können frei eingegeben und die Zuordnung zum Elternelement der nächsthöheren Ebene über ein Pull-Down-Menü ausgewählt werden.

Eingabe in DeltaMasterAbbildung 12: Eingabe in DeltaMaster

Mit Klick auf den Haken wird das neue Produkt „Ergolux Extrem Spezial“ einschließlich des Keys in die T_S_Produkt geschrieben.

Nun muss die im vorherigen Kapitel erstellte Prozedur beispielsweise über einen CustomApp-Aufruf ausgeführt werden.

Dimensionen vor UpdateAbbildung 13: Dimension vor Update

Nach einem Neustart der DeltaMaster-OLAP-Anwendung oder einer OLAP-Modell-Synchronisierung steht das neue Element zur Verfügung.

Dimensionen nach UpdateAbbildung 14: Dimension nach Update

Mit dieser Technik ergeben sich weitreichende Möglichkeiten zur flexiblen Ausführung von beliebigen XMLA-Befehlen in der OLAP-Datenbank.