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

Erstellen lokaler Cubefiles

Es ist sicherlich eine reizvolle und nachvollziehbare Anforderung, Berichte und Analysen mit DeltaMaster auch unterwegs, getrennt von den liefernden Systemen, durchführen zu können. Um dies zu verwirklichen, existiert die Möglichkeit, durchkalkulierte Analysesitzungen zu speichern und diese dann offline aufzurufen. Ein wenig kniffliger wird es jedoch, wenn nicht nur die Ansicht von starren, bereits vorberechneten Berichten gewünscht ist, sondern die Notwendigkeit eines offline verfügbaren Würfels besteht.

Dieser Würfel bietet dem Anwender dann die Möglichkeit, an jedem beliebigen Ort und auf jedem unterstützten System Analysen, Berechnungen und Kalkulationen durchzuführen, wobei möglichst keine Einschränkungen gegenüber der serverbasierten OLAP-Datenbank existieren sollten. Des Weiteren kann ein lokaler Würfel dem Zweck der Berechtigungssteuerung dienen, wenn jedem Anwender nur die Daten lokal zur Verfügung gestellt werden, die er für sich auch beanspruchen darf.

Die folgenden Zeilen befassen sich mit den Möglichkeiten der Erstellung von solchen lokalen Cubefiles und deren Anbindung an Deltamaster.

Eine Möglichkeit, relativ schnell und präzise einen lokalen Cube zu erstellen, besteht in der Ausführung eines Create Cube MDX-Kommandos gegenüber der Analysis Services Datenbank. Durch Angabe der benötigten Dimensionen und Measures kann der Aufbau des Würfels hier bestimmt werden.

Am Beispiel der Chair-Datenbank könnte die Syntax wie folgt aussehen:

CREATE GLOBAL CUBE [LocalChair]
Storage 'C:\temp\LocalChair.cub'
FROM [Deckungsbeitragsrechnung]
(
MEASURE  [Deckungsbeitragsrechnung].[Absatz],
MEASURE  [Deckungsbeitragsrechnung].[Materialkosten],
MEASURE  [Deckungsbeitragsrechnung].[Rabatt],
MEASURE  [Deckungsbeitragsrechnung].[Umsatz],
DIMENSION [Deckungsbeitragsrechnung].[Kunden],
DIMENSION [Deckungsbeitragsrechnung].[Perioden],
DIMENSION [Deckungsbeitragsrechnung].[Produkte]
(
LEVEL [Top],
LEVEL [Produkthauptgruppe],
LEVEL [Produktgruppe]
(
PROPERTY [En L2],
PROPERTY [Fr L2]
)
),
DIMENSION [Deckungsbeitragsrechnung].[Stoffgruppen],
DIMENSION [Deckungsbeitragsrechnung].[Wertarten]
)

Dies erstellt einen lokalen Würfel unter C:\temp mit den hier ausgewählten Dimensionen und Measures, wobei zu beachten ist, dass zwar die Angabe der Elementeigenschaften (Properties) syntaktisch keinen Fehler hervorruft, auf die generierte Datei jedoch keine Auswirkungen hat. Eine Abbildung von Elementeigenschaften ist in lokalen Cubes per “Create Cube”-Kommando ebenso wenig erreichbar wie “Distinct Count”-Measures.

Womit wir bei den Nachteilen einer solchen Cubefileerzeugung wären.

Werden die Dateien direkt aus der OLAP Datenbank per MDX Statement erzeugt, so sind folgende Strukturen nicht darstellbar:

  • Elementeigenschaften
  • “Distinct Count”-Measures
  • Passwortgeschützte “Encryption”

Um auch diese Modellspezifikationen in einer lokalen Cube-Datei abbilden zu können, bedarf es dem Zugriff auf die relationale Quelldatenbank, möglichst nach den Regeln des Starschemas aufbereitet.

Hier kommt die Möglichkeit der Cubeerstellung per Analysis Services Scripting Language (ASSL) ins Spiel, der Skriptsprache des Microsoft SQL Servers bestehend aus DDL und XMLA.

Diese ermöglicht die Cubeerstellung direkt aus den relationalen Tabellen und bietet einige zusätzliche gestalterische Möglichkeiten bei der Erstellung des lokalen Würfels.

Im Folgenden wird exemplarisch die Erstellung eines Cubefiles mit Elementeigenschaften unter Verwendung von ASSL dargestellt. Wir gehen hier von einer sehr vereinfachten Modellstruktur mit einer Zeitdimension und einer MeasureGroup aus, welche sowohl relational, als auch in Form eines OLAP Würfels in SQL Server 2005 vorliegt.

Da die manuelle Erstellung des benötigten Skriptes recht aufwendig erscheint, gibt es zwei recht einfache Möglichkeiten, sich ein ASSL konformes Grundgerüst für die Würfelerstellung generieren zu lassen

  • Eine Kombination aus zwei Skripten, die im Management Studio automatisiert aus den Quelldatenbanken erzeugt werden können. Diese beinhaltet das Skript „Würfel verarbeiten“ in Kombination mit dem Skript der kompletten OLAP Datenbank (per Rechtsklick auf die gewünschte OLAP Datenbank: Skript für Datenbank als -> Create in -> Neues Abfrage Editor Fenster).

 

  • Eine zweite Möglichkeit besteht in der Nutzung des SQL Server Profilers, welcher bei der Datenbankabfrage eines Create Global Cube Statements protokollierend die gesuchte xmla Syntax erfassen kann. Hier sollte sich dann nach Ausführen der Abfrage ein Eintrag beginnend mit “CREATE GLOBAL CUBE-Anweisung. FILENAME|C:\temp\LocalCube.cub|DDL|” finden, wobei für die spätere Cubeerstellung nur der in den mit < batch > befindlichen Klammern verfügbare Text herauskopiert und als neue Datei mit der Endung *.xmla gespeichert werden sollte.

Womit wir beim nächsten Schritt wären. Da nun ein Skript zur Erstellung eines Abbildes der existierenden OLAP Datenbank vorhanden ist, muss dieses noch um gewünschte Anforderungen wie beispielsweise Elementeigenschaften ergänzt, bzw. auszulassende Dimensionen verringert werden.

Es folgt exemplarisch die Syntax für die Darstellung von Elementeigenschaften für den Monat der Periodendimension.

<Dimensions>
       <Dimension>
               <ID>Periode</ID>
               <Name>Periode</Name>
               <DimensionID>Periode</DimensionID>
<Attributes>
       <Attribute>
               <AttributeID>Monat_Jahr</AttributeID>
               <AttributeHierarchyEnabled>false</AttributeHierarchyEnabled>
               <AttributeHierarchyVisible>false</AttributeHierarchyVisible>
               </Attribute>
       <Attribute>
               <AttributeID>Monat_NameKurz</AttributeID>
               <AttributeHierarchyEnabled>false</AttributeHierarchyEnabled>
               <AttributeHierarchyVisible>false</AttributeHierarchyVisible>
               </Attribute>
       <Attribute>
               <AttributeID>MonatID</AttributeID>
               <AttributeHierarchyVisible>false</AttributeHierarchyVisible>
               </Attribute>
</Attributes>
</Dimension>
</Dimensions>

Das fertige Skript sollte in Form einer Datei “LocalCube.xmla” im Dateisystem gespeichert werden.

Dieses kennt nun zwar seine relationale Quelldatenbank mit den vorhandenen Dimensionen und Measures, weiß aber noch nicht, dass ein neues, lokales Cubefile erstellt werden soll.

Auch hier gibt es wieder mehrere Möglichkeiten, in den bisherigen Tests hat sich jedoch folgende Möglichkeit als sehr stabil und zuverlässig erwiesen:

Der Aufruf der xmla-Datei per SSIS Paket und dem darin enthaltenen Zielobjekt. Möglich wird dies mittels “Analysis Services Task DDL ausführen”.

Hier werden in dem Eingabebereich DDL die drei Felder Connection, SourceType und Source gefüllt.

Connection: der gewünschte Pfad + Name der lokalen Cubedatei angegeben.

(Hier “C:\temp\LokalerCube.cub”)

SourceType: Datenverbindung

Source: Die zuvor erzeugte xmla-Datei. (LocalCube.xmla)

Wird dieser Task ausgeführt, erzeugt er nun eine lokale Cubedatei mit den Vorteilen der ASSL skriptgesteuerten Erstellung auf Basis der relationalen Quelle. In DeltaMaster ist zu sehen, dass die gewählten Attribute für die Elemente der Ebene Monat im lokalen Cube erstellt wurden.

Bei Problemen mit dem Zugriff von DeltaMaster auf lokale Cubefiles empfiehlt sich die Lektüre der DeltaMaster deltas! 5.3.8: Hier ist in Kapitel 14 beschrieben, welche Einstellungen hinsichtlich der unterschiedlichen Versionen und Schnittstellen zu beachten sind.