Detailinformationen wie z.B. Rechnungsnummern oder Rechnungstexte gehören nicht in OLAP-Datenbanken. Die entstehenden Dimensionen würden sehr groß und unhandlich und sie würden das Analysemodell für Abfragen deutlich langsamer machen. Dennoch werden die Informationen bei Auswertungen gelegentlich benötigt. Sie werden daher relational in der Faktentabelle vorgehalten. In DeltaMaster Modeler lassen sich diese Spalten einfach als sogenannte „Info-Felder“ anlegen. Der Zugriff auf die Daten in DeltaMaster erfolgt dann über das Analysewerkzeug „SQL-Durchgriff“.
Probleme mit dem SQL-Durchgriff gibt es, wenn für die Benutzer in der OLAP-Datenbank ein Berechtigungskonzept hinterlegt ist oder wenn eine Tabelle in mehrere Partitionen aufgeteilt wird. Dieser Blogbeitrag beschreibt, wie in wenigen Schritten auch der SQL-Durchgriff in DeltaMaster gesichert werden kann. Mit derselben Methode können auch partitionierte Faktentabellen einfacher für den Benutzer zugänglich gemacht werden.
Berechtigungen einrichten für den SQL-Durchgriff
In OLAP-Modellen lassen sich recht leicht Berechtigungen für ein Dimensionselement vergeben (vgl. Rollenverwaltung in SSAS). Die oberste Ebene lässt sich dabei aber nicht ausblenden – über die Option „nur sichtbare Gesamtwerte anzeigen“ wird jedoch die richtige Summe angezeigt.
Steht man nun auf diesem Top-Element (z.B: „Alle Mandanten“) und nutzt den SQL-Durchgriff ohne zusätzliche Konfiguration, geht etwas schief: Obwohl man nur das Recht für ein Dimensionselement hat, werden trotzdem Datensätze aller Mandanten angezeigt. Der Grund: DeltaMaster löst das Berechtigungskonzept der OLAP-Datenbank nicht auf und überträgt es nicht auf die relationalen Tabellen.
Abhilfe kann man hier nur schaffen, wenn man das bereits vorgestellte Konzept der dynamischen Zeilenberechtigung in SQL nutzt. Hat man eine Berechtigungssicht für eine Faktentabelle erstellt, ist es sehr einfach, diese dem Programm bekannt zu machen: Über eine Namenskonvention erkennt DeltaMaster, dass nicht die ursprüngliche Faktentabelle für den SQL-Durchgriff verwendet werden soll, sondern die (für jeden Benutzer zeilenweise berechtigte) Faktensicht. Die Sicht muss lediglich V_SEC_Faktentabellenname heißen.
Das übliche Präfix „T_“, das für Tabellennamen verwendet wird, muss dabei aber weggelassen werden.
Beispiel: Originaltabelle: T_Fact_01_Umsatz Sicht: V_SEC_FACT_01_Umsatz
Verwendung der „V_SEC_“-Sicht bei partitionierten Faktentabellen
Bei sehr großen Faktentabellen ist es sinnvoll, diese in Partitionen mit ca. 3-8 Millionen Datensätzen aufzuteilen. Bei sinnvoller Aufteilung der Partitionen (z.B. nach Jahren oder Währung) kann dadurch die Abfragegeschwindigkeit erhöht werden.
Das Anlegen von Partitionen ist ebenfalls automatisiert in DeltaMaster Modeler möglich. Es entstehen dabei Faktentabellen mit identischer Struktur. Im SQL-Durchgriffsmodul in DeltaMaster werden alle diese Partitionstabellen angezeigt. Für den Miner-Anwender ist es sehr umständlich, für den Viewer-Anwender unmöglich, die für die jeweilige Sicht richtige Faktentabelle auszuwählen.
Abhilfe schafft hier der Trick mit der „V_SEC“-Sicht. Man muss nur z.B. der ersten Faktentabelle alle anderen Faktentabellen unterschieben. Dies ist mit dem SQL-Befehl „Union“ leicht möglich.
Beispiel für die Faktentabelle „T_Fact_01_Umsatz“, die in drei Partitionen geteilt wurde:
In der Anwendung muss dann lediglich die T_Fact_01_Umatz_01-Tabelle ausgewählt werden. Unabhängig von der Sichtauswahl werden nun alle Daten angezeigt.