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.
Abbildung 1: Verbindungsserver
Der Name ist beliebig, als Anbieter den passenden Analysis-Services-Eintrag und als Datenquelle der verwendete AS (hier localhost).
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.
Nach erfolgreicher Verbindung sind unter „Serverobjekte\Verbindungsserver\Servername\Kataloge“ die einzelnen OLAP-Datenbanken sichtbar.
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.
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“.
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.
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.
Das gleiche Spiel mit der Measuregroup und wieder Verarbeiten auswählen und auf Skript klicken.
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.
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.
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.
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.
Nach einem Neustart der DeltaMaster-OLAP-Anwendung oder einer OLAP-Modell-Synchronisierung steht das neue Element zur Verfügung.
Mit dieser Technik ergeben sich weitreichende Möglichkeiten zur flexiblen Ausführung von beliebigen XMLA-Befehlen in der OLAP-Datenbank.