Datentypänderung mit Systemtabellen

Wenn sich Datentypen im Vorsystem, aus welchem Daten in Tabellen einer SQL-Server-Datenbank importiert werden, ändern, ist oft großer manueller Aufwand notwendig um alle betroffenen Tabellen und Spalten zu identifizieren und anzupassen. In diesem Beitrag wird eine Lösung mithilfe von Systemtabellen vorgeschlagen, die es ermöglicht, die Datentypänderung automatisch per Prozedur vorzunehmen. weiterlesen…

Dekumulieren von Kennzahlen mit SQL

In den meisten OLAP-Modellen, die wir mit unserem DeltaMaster Modeler oder auch direkt im BI-Studio erstellen, gibt es die Möglichkeit, Kennzahlen kumuliert darzustellen. Die Kumulation wird meistens per MDX im Cubescript angelegt, zum Beispiel über eine Aggregate-Anweisung wie in folgendem Beispiel, in welchem die bisher nicht kumulierten Kennzahlen auf Jahresebene aggregiert werden:

Aggregate(PeriodsToDate([Period].[Period].[Year], [Period].[Period].CurrentMember),[Cumulation].[Cumulation].[Cumulation].&[1])

Alternativ können kumulierte Kennzahlen auch bereits auf der relationalen Datenbank ermittelt werden wie es im Beitrag „SUM-Where OVER the rainbow“ schon sehr anschaulich von Torsten Krebs beschrieben wurde.

Mitunter ist es aber erforderlich kumuliert gelieferte Daten wieder zu dekumulieren. weiterlesen…

CustomApp Teil2 – Anwendung im Web

In dem Artikel „CustomApp Teil1 – Anwendung im Client“ (im Folgenden Teil1 genannt) wurde bereits beschrieben, was mit einem benutzerdefinierten Menü im Client möglich ist, welche Voraussetzungen notwendig sind und wie mit den einzelnen Menüvarianten gearbeitet werden kann. In dem nun folgenden zweiten Teil soll erläutert werden, was mit der Variante der CustomApp als Webkomponente möglich ist und welche Unterschiede zu der Client-Variante bestehen. weiterlesen…

CustomApp Teil1 – Anwendung im Client

Bereits im Oktober 2010 bzw. Januar 2011 beschrieb Enrico Kreller in seinen Beiträgen „Einbindung eines benutzerdefinierten Menüs in den DeltaMaster“ Teil 1 und Teil 2 die Möglichkeit, im DeltaMaster ein separates Menü anzuzeigen, über das der Anwender die verschiedensten Aktionen ausführen kann:

Einbindung eines benutzerdefinierten Menüs in den DeltaMaster Teil 1
Einbindung eines benutzerdefinierten Menüs in den DeltaMaster Teil 2

Dieses benutzerdefinierte Menü heißt nun nicht mehr DataEntryMenue sondern CustomApp und verfügt über verbesserte Funktionalitäten und Komponenten, die den Einsatz sowohl im DeltaMaster-Client als auch in der webbasierten DeltaMaster-Anwendung ermöglichen.

Inhalt dieses Artikels soll daher der Einsatz des Menüs im DeltaMaster-Client sein. Die Beschreibung, wie dieses Menü im Web funktioniert, erfolgt in Teil2 zu einem späteren Zeitpunkt.

Den gesamten Artikel können Sie hier abrufen. weiterlesen…

Dynamisches SQL mit Ausgabeparameter

Dynamisches SQL erlaubt die Definition und Ausführung von SQL-Anweisungen zur Laufzeit. Teile der Anweisungen befinden sich in Variablen, die ihre Werte zur Laufzeit ändern können. So kann ein dynamisch erstelltes SQL-Statement bei Veränderung der Variablen immer wieder verwendet werden ohne neu erstellt werden zu müssen.

Jeder von uns hat sicher bereits dynamisches SQL entwickelt und verwendet. Seltener wird dabei ein Ausgabewert benötigt. Aber genau um den soll es in diesem Artikel gehen, da die Programmierung eines Ausgabewertes innerhalb eines dynamischen SQL-Statements bestimmten Regeln unterliegt.

Im Beispiel wird eine Prozedur zum Kopieren von Werten der Wertart 1 zu Wertart 2 bei definiertem Zeitpunkt und Kunden in der Datenbank Chair erstellt. Es wird dafür dynamisches SQL eingesetzt, weil sich die zu kopierenden Werte in mehreren Tabellen befinden. Dabei soll zuvor ermittelt werden, ob es zu diesem Zeitpunkt und bei diesem Kunden bei der Wertart 1, die kopiert werden soll, überhaupt Daten vorliegen. Diese Anzahl Datensätze ist also der Ausgabewert, der für jede Tabelle ermittelt wird.
weiterlesen…

Automatischer Datenimport bei sporadischer Dateibereitstellung (Polling per SSIS)

Daten sind die Grundlage jedes BI-Projekts – ohne Daten ist keine Analyse möglich. Aber woher kommen diese Daten? Häufig wird eine SQL-Server-Datenbank als relationale Datenquelle gewählt. Aber meistens liegen nicht alle Daten in dieser Datenbank bereits vor. Dann müssen die fehlenden Daten in die SQL-Server-Datenbank importiert werden. Die Quellen für diese Datenimporte können sehr vielfältig sein – von anderen Datenbanken bis hin zu Textdateien. Um sich die Arbeit des Datenimports zu erleichtern, bietet sich die Verwendung der SQL Server Integration Services (SSIS) von Microsoft an. Daten aus verschiedensten Quellen lassen sich hier problemlos verarbeiten. Die Automatisierung über einen Scheduler ist ebenfalls leicht zu realisieren.

Was kann man aber tun, wenn man Daten in sporadischen Zeitabständen importieren soll und den Import nicht manuell ausführen möchte? Weiß man nicht, wann die Datei vorliegt, benötigt man ein SSIS-Paket, das prüft, ob eine Datei in einem vorgegebenen Verzeichnis vorhanden ist und die Verarbeitung auch nur dann startet. Nach dem Import muss die Datei gelöscht oder zumindest umbenannt werden, um einen erneuten Import der gleichen Daten am nächsten Ausführungstermin des SSIS-Paketes zu verhindern.

Genau dies soll hier am Beispiel eines Imports von Plandaten aus einer CSV-Datei in die Chair-Datenbank gezeigt werden. weiterlesen…

Stilregeln in SQL- und MDX-Statements sowie SSIS-Paketen

Jeder, der selbst SQL- oder MDX-Statements schreibt und die anderer lesen und verstehen möchte, wird feststellen, dass jeder einen etwas anderen Schreibstil verwendet. Da T-SQL eine flexible Gestaltung der Statements zulässt, können Schlüsselwörter, Objektnamen und Konstanten frei über die Zeilen der Statements verteilt werden.

Das gilt sowohl für SQL- und MDX-Statements im Microsoft SQL Server Management Studio als auch für Berechnungen mit MDX im Microsoft Visual Studio. Dies kann vor allem bei längeren Statements schnell unübersichtlich werden und damit viel Zeit kosten diese zu verstehen. Das betrifft auch uns selbst, wenn wir nach längerer Zeit das Statement wieder aufrufen und uns fragen, was wir damit eigentlich bewirken wollten. Ähnlich ist es bei SSIS-Paketen. Hier sind zwar die einzelnen Elemente vorgegeben, aber ihre Anordnung und ihre konkrete Funktion sind jeweils frei definierbar.

Daher können ein paar grundsätzliche Stilregeln für SQL- und MDX-Statements sowie für SSIS-Pakete für mehr Übersichtlichkeit und Lesbarkeit sorgen. weiterlesen…