Daten in Echtzeit bereitstellen

In diesem Blog-Artikel wird aufgezeigt, wie Daten einfach, performant und nahezu in Echtzeit in einer OLAP-Datenbank aktualisiert werden können. Dafür wird eine periodische Aktualisierung mit einem Intervall im Sekundenbereich verwendet. Hervorzuheben sind die sehr gute Performance bei Datenabfragen bei gleichzeitiger weiterlesen…

T-SQL schnelle Nachfolgersuche

In der Datenbankprogrammierung muss gelegentlich eine Tabelle mit sich selbst verbunden werden. Beispielsweise müssen Vorgänger- oder Nachfolger gefunden werden, um anschließend Berechnungen auf Grundlage dieser Informationen durchzuführen. Mit Hilfe eines so genannten Self Joins, der eine Datenbanktabelle mit sich selbst verbindet, kann eine Nachfolgersuche durchgeführt werden.

Dieser Beitrag zeigt am Beispiel der Nachfolgersuche wie ein Self Join grundsätzlich erstellt wird, anschließend wird eine leistungsfähige Variante mit Hilfe von Tabellenausdrücken (Common Table Expressions (CTE)), Partitionen und Rangfolgefunktionen gezeigt. Die Beispiele beziehen sich auf die Tabelle „promotion“ aus der Microsoft Beispiel Datenbank „Foodmart“. Die Tabelle enthält 1.864 Datensätze. weiterlesen…

Berechtigungsverwaltung über AD-Gruppen

Über das Thema Berechtigungen wurde bereits mehrfach berichtet, dennoch gibt es immer wieder neue interessante Lösungen. Neulich beim Kunden in Shanghai hatte das Thema Berechtigungen allerhöchste Priorität aufgrund der hohen Fluktuation von Mitarbeitern. Die Anforderungen waren dementsprechend hoch und vermeintlich widersprüchlich: Berechtigungen sollten möglichst flexibel je Abteilung, je Region und je Kennzahl vergeben werden können und das natürlich ohne großen Aufwand.

Ohne Aufwand bedeutet in diesem Fall, dass ein Mitarbeiter einen Antrag über ein Formular stellt, dieser Antrag von einem Vorgesetzten geprüft wird und nach Freigabe von einem beliebigen Mitarbeiter der IT bearbeitet werden soll.

Durch den sehr volatilen Nutzerkreis kam als Lösung nur die Nutzung von Active-Directory(AD)-Gruppen in Frage. Jeder Anwender hat einen AD-User, und die IT braucht den Mitarbeiter ausschließlich bestimmten Gruppen zuordnen oder eben aus einer Zuordnung wieder herausnehmen bzw. den User deaktivieren. Selbstverständlich müssen die Berechtigungen über AD-Gruppen in OLAP und auch der SQL-Datenbank – beim DeltaMaster-SQL-Durchgriff – greifen.

Weiterhin enthält das BI-Modell mehrere hundert Kennzahlen und wird darüber hinaus nicht nur lokal, sondern auch in der Muttergesellschaft weiterentwickelt: Halbautomatisch werden neue Kennzahlen oder Kennzahlengruppen bereitgestellt. Eine Berechtigung auf einzelne Kennzahlen wäre somit sehr aufwändig und fehleranfällig, aber auch dafür haben wir eine Lösung. weiterlesen…

T-SQL Schlüsseldienst

In einem Kundenprojekt hatte ein Kunde seine weltweite Vertriebsstruktur in einer mehrstufigen Hierarchie organisiert. Die aus den Vorsystemen gelieferte Hierarchie reichte dem Kunden allerdings nicht aus, da diese erstens nicht genügend Zwischenebenen hatte und zweitens die Vertriebsstruktur stetig erweitert und zum Teil modifiziert werden musste. Letzteres wurde in den Vorsystemen oft erst nach einiger Zeit vorgenommen.

Aus diesem Grund hatte der Kunde eine Tabelle angelegt, aus der er sich die Hierarchie aufgebaut hat. Die Hierarchie verfügt über eine zweistellige Anzahl an Ebenen und die Pflege erfolgt in einer Tabelle über das SQL Server Management Studio (SSMS). Genau dieser Umstand hat jedoch sehr häufig dazu geführt, dass die Befüllung der Tabellen in dem Snowflake-Schema für die OLAP Datenbank durch Fremdschlüssel-Verletzungen fehlgeschlagen ist.

Wie kam es dazu? Der erfahrene BI-Consultant ahnt es bereits und kann direkt über Los gehen und bei Abschnitt 2 weiterlesen. Für alle anderen wird die Problemstellung zunächst noch einmal am Beispiel des Demo-Modells der Chair AG von Bissantz & Company erläutert. weiterlesen…

DeltaLoad mit Change Data Capture

In den meisten BI-Systemen nimmt das Laden der Faktendaten die meiste Zeit in Anspruch. Daher kommt man schnell auf die Idee, nicht immer alle Faktendaten zu laden, sondern nur die neuen und die geänderten Datensätze. Dabei gibt es unterschiedliche Szenarios in Bezug auf das Quell-System:

  • Es werden nur neue Datensätze geladen und es ist eine Spalte vorhanden, mittels derer genau bestimmt werden kann, welche Datensätze zu laden sind. Dies könnte z. B. ein fortlaufender Datensatzzähler sein.
  • Es kann ein überlappendes Zeitfenster auf einer Datumsspalte bestimmt werden, in welchem sich Daten ändern können, z. B. das Buchungsdatum.
  • Es sind keine Informationen vorhanden, mit Hilfe derer nur die geänderten Daten selektiert werden können.

Der SQL Server bietet unterschiedliche Möglichkeiten, diese Probleme zu lösen. Mittels selbst pro-grammiertem T-SQL Code ist selbstverständlich alles möglich, jedoch ist das nicht immer die beste Lösung. Gerade für das dritte oben genannte Szenario wäre viel Aufwand notwendig. Bereits für den SQL Server 2008 hat Microsoft eine Funktion mit dem Namen Change Data Capture (CDC) eingeführt. Mit dem SQL Server 2012 wurde die Funktion weiter ausgebaut, u. a. ist eine SSIS- Unterstützung hinzugekommen. In diesem Beitrag wird gezeigt, wie CDC für ein Delta Ladevorgang verwendet werden kann. weiterlesen…

Rekursionen in MDX

Bei einem international agierenden Kunden habe ich kürzlich eine rollierende Planung implementiert. Ein Mal pro Monat gibt es bei dem Kunden eine Planungsrunde, in der die letzten Erkenntnisse verarbeitet werden und aus der eine neue Planung entsteht. Es wird sehr langfristig geplant, für die nächsten 3 Jahre auf Monatsbasis und für die nächsten 12 Jahre auf Jahresebene mit linearer Verteilung auf die Monate. Es wird jedoch nicht immer die gesamte Planung angepasst, sondern nur die Regionen und die Monate oder Jahre, in denen neue Erkenntnisse vorliegen.
Der Kunde hatte verschiedene Wünsche für eine möglichst einfache Bedienung im DeltaMaster. Unter anderem sollte es ein Element geben, das für den gesamten Planungszeitraum die jeweils aktuellste Planversion enthält. Die Planversionen selbst sollten aber weiterhin miteinander verglichen werden können, um Änderungen und Planungsqualität beurteilen zu können.
Eine einfache Lösungsmöglichkeit wäre es gewesen, die Daten der einzelnen Planversionen schon in der relationalen Datenbank entsprechend aufzubereiten. Jedoch würden die Daten unnötig verdop-pelt werden, was wiederum zu mehr Speicherplatzverbrauch und zu längeren nächtlichen Verarbei-tungszeiten führen würde.
Ich hatte die Idee einer rekursiven Umsetzung im Cube-Script. In diesem Fall müssen die Daten nicht verdoppelt werden. Spannend ist die Frage, ob die Rekursion auch mit berechneten Elementen und abgeleiteten Kennzahlen funktioniert. weiterlesen…

Projektwerkzeuge von redgate

Informatiker sind stets bestrebt, Komplexität zu reduzieren, Performance zu steigern und sich das Arbeitsleben so leicht wie möglich zu gestalten: Quellcode wird beispielsweise nicht kopiert, sondern wiederverwendet; eine Dokumentation wird nach Möglichkeit automatisiert erstellt und eine gute Entwicklungsumgebung soll die Erstellung von Software umfassend unterstützen.
In unseren Projekten verwenden wir für die Entwicklung größtenteils die gleichen Projektwerkzeuge. Die wahrscheinlich am häufigsten eingesetzte Projektumgebung besteht aus nur drei Tools: SQL Server Management Studio (SSMS), Business Intelligence Development Studio (BIDS) bzw. Visual Studio (ab SQL Server 2012) und DeltaMaster Modeler (DMM). Mit dieser schlichten Projektumgebung lassen sich relativ schnell und einfach BI-Projekte umsetzen. Aber es gibt durchaus Möglichkeiten, Effizienz und Qualität weiter zu steigern.
In diesem Beitrag wird zunächst eine Übersicht über das SQL Developer Bundle von der Firma redgate aus Cambridge gegeben. Anschließend wird gezeigt, wie diese Tools die Entwicklung von BI-Projekten unterstützen können. Insbesondere wird auf das Thema Versionskontrolle eingegangen weiterlesen…

Relative Periodenbezüge: Normierung von Zeitreihen

Wir alle kennen die Hilfsdimension Periodenansicht und wissen um ihren Nutzen für Analysen. Mittels der Periodenansicht kann zum Beispiel leicht ein generischer MDX-Ausdruck erstellt werden, der für jede beliebige Kennzahl den Vorjahreswert anzeigt. Auch absolute und relative Abweichungen zum Vorjahr sind auf diese Weise schnell ermittelt. In DeltaMaster unterstützt uns dabei der „Editor für Zeitanalyseelemente“ und deswegen müssen wir die MDX-Ausdrücke nicht einmal selbst schreiben.
Aber können wir damit auch unterschiedliche Zeiträume vergleichen? Nicht ohne Weiteres, denn bei absoluten und relativen Abweichungen werden immer zwei Zeitpunkte, bzw. in MDX zwei Elemente, miteinander verglichen, z.B. Umsatz 2013 und Umsatz 2012 = Δ Umsatz VJ. Ein Vergleich von zwei Zeitreihen, die zu unterschiedlichen Zeitpunkten beginnen, ist demnach nicht einfach so möglich.
Ein relativer Periodenbezug ist der Vergleich von Zeitreihen, die zu unterschiedlichen Zeitpunkten bzw. Perioden starten. Aber wann kann man das gebrauchen? Und wie funktioniert das? Genau damit beschäftigt sich dieser Beitrag. weiterlesen…