Im Zuge der Unternehmensplanung werden die meisten Daten händisch erfasst. Dabei werden die wichtigsten Kunden- und Produktkombinationen meist einzeln besprochen und geplant, weniger wichtige Kunden- und Produktkombinationen werden „nur“ mit einer prozentualen Veränderung bedacht. Basis für die Planung sind dabei meist die Ist- und Forecastwerte des aktuellen Jahres. Um sich bei der Planung an diesen Werten orientieren zu können, enthalten die Planungsberichte immer auch eine Spalte mit den genannten Werten. Damit nicht jeder Wert händisch in die Planspalte übernommen werden muss, ist es sinnvoll, die Planspalte bereits mit den Ist- bzw. Forecastwerten vorzufüllen. Anschließend können die relevanten Zellen angepasst werden. Da es mehrere Planrunden geben kann, werden Planstände auch oft als unveränderliche Vergleichsgröße gesichert. Beide Prozesse, das Vorbefüllen der Planwerte und das Sichern verschiedener Planstände kann vom Datenbankadministrator direkt auf der Datenbank vorgenommen werden. Es ist aber auch möglich, diese Funktion dem Anwender selbst zur Verfügung zu stellen. Dafür kann in DeltaMaster die Datenkopierfunktion genutzt werden. Diese Funktion ermöglicht es, Kopierprozesse frei zu definieren und diese dem Anwender in einer Planungsanwendung zur Verfügung zu stellen. Das und vor allem wie diese Funktion in Verbindung mit relationalen Datenbanken arbeitet, soll der folgende Blogbeitrag beschreiben.
Voraussetzungen
Voraussetzung für die Nutzung der Datenkopierfunktion ist eine gültige Planungslizenz. Außerdem muss eine funktionierende Dateneingabeanwendung für relationale Datenbanken existieren, denn DeltaMaster nutzt beim Kopieren der Daten die gleichen Prozeduraufrufe wie bei der händischen Dateneingabe in Pivottabellen (P_Update_PIV-Prozeduren). Wie eine solche Dateneingabeanwendung erstellt und konfiguriert werden muss, wird im Blogbeitrag Aufbau eines Datenerfassungssystems für relationale Datenbanken beschrieben. Der aktuelle Blogbeitrag basiert auf der gleichen DeltaMaster-Anwendung.
Vorgehen
Prozessdefinition
Um Kopierprozesse ausführen zu können, müssen diese zunächst erstellt werden. Durch Auswählen des Menüeintrags Modell – Prozessdefinition… in DeltaMaster innerhalb der geöffneten Analysesitzung öffnet sich das Fenster Prozessdefinition. Hinweis: Dieser Eintrag ist nur im Modus Miner verfügbar.
Das angezeigte Fenster besteht aus drei Bereichen, welche miteinander in Verbindung stehen. Im oberen Bereich Prozesse werden alle bereits definierten Kopierprozesse angezeigt. Wird ein bereits definierter Prozess per Mausklick ausgewählt, werden in den darunterliegenden Bereichen Ausführungskontext und Aktionen die Einstellungen des ausgewählten Prozesses angezeigt. Über den Menüpunkt Löschen kann der aktuell ausgewählte Prozess gelöscht werden.
Prozesse
Über einen Klick auf den Menüeintrag Neuer Prozess im Fenster rechts oben wird ein neuer Eintrag im Bereich Prozesse hinzugefügt. Jeder Eintrag sollte mit einem sprechenden Namen versehen werden, da dieser Name später dem Anwender zur Auswahl des jeweiligen Kopierprozesses angezeigt wird. Im Feld Beschreibung kann eine detaillierte Beschreibung eingegeben werden. Da für den im oben gezeigten Eintrag Umsatz kopieren noch keinerlei Definitionen vorgenommen wurden, sind die Bereiche Ausführungskontext und Aktionen noch leer.
Ausführungskontext
Im Bereich Ausführungskontext kann definiert werden, innerhalb welchen Datenraumes (bezogen auf die Dimensionen des Modells) der Kopierprozess ausgeführt werden soll. Existiert hier kein Eintrag, wird der Kopierprozess im Kontext der aktuellen Sicht des Berichts durchgeführt. Durch Klicken auf den Menüeintrag Dimension hinzufügen wird ein neuer Eintrag eingefügt. Danach muss in der Spalte Dimension/Hierarchie die Dimension ausgewählt werden, für die eine Definition vorgenommen werden soll. In der Spalte Sichtbar kann der vorgenommene Eintrag für den Anwender ausgeblendet werden. Das ist dann sinnvoll, wenn sichergestellt werden soll, dass Daten nur in einem fest definierten Bereich verarbeitet werden, unabhängig von den Einstellungen im Fenster Sicht, z. B. nur in der Wertart Plan. Anschließend muss der Quellbereich definiert werden, d. h. woher die zu kopierenden Daten stammen. Über die Spalte Auswahlmethode (innerhalb von Spalte Quelle) kann die Art des zur Verfügung gestellten Auswahldialogs gewählt werden, entweder über den bekannten Dimensionsbrowser oder einer simplen Liste. Wird Keine Auswahl aktiviert, ist das aktuell ausgewählte Element im Fenster Sicht oder das in der Spalte Standardauswahl definierte Element voreingestellt.
In Abhängigkeit des gewählten Eintrags in für die Spalte Auswahlmethode wird in der Spalte Auswahlbereich ein anderer Inhalt zur Auswahl angeboten.
-
- Auswahlmethode Dimensionsbrowser: Bei der Auswahl des Eintrags Gesamte Dimension wird dem Anwender die komplette Dimension im Dimensionsbrowser angezeigt, inkl. aller Hierarchieebenen. Bei der Auswahl des Eintrags aus Abfrage kann die Anzeige der Elemente im Dimensionsbrowser über eine SQL-Abfrage eingeschränkt werden. Nicht erlaubte Elemente werden dann im Dimensionsbrowser ggf. grau dargestellt und sind somit nicht auswählbar. In der Listensicht werden nur erlaubte Elemente angezeigt.
Abb. 3 Menü Auswahlbereich Dimensionsbrowser
- Auswahlmethode Dimensionsbrowser: Bei der Auswahl des Eintrags Gesamte Dimension wird dem Anwender die komplette Dimension im Dimensionsbrowser angezeigt, inkl. aller Hierarchieebenen. Bei der Auswahl des Eintrags aus Abfrage kann die Anzeige der Elemente im Dimensionsbrowser über eine SQL-Abfrage eingeschränkt werden. Nicht erlaubte Elemente werden dann im Dimensionsbrowser ggf. grau dargestellt und sind somit nicht auswählbar. In der Listensicht werden nur erlaubte Elemente angezeigt.
In der Spalte Abfrage für Auswahl kann über ein gültiges SQL-Statement der Inhalt des Dimensionsbrowsers oder der Liste definiert werden. Die Eingabe des Statements kann direkt in der Zelle
oder durch Klicken auf den Knopf mit den drei Punkten in einem SQL-Editor eingegeben werden.
In der Spalte Standardauswahl kann das voreingestellte Element im Kopierdialog bestimmt werden. Bei der Auswahl des Eintrags wie Sicht wird das aktuell ausgewählte Element im Fenster Sicht voreingestellt. Bei der Auswahl des Eintrags wie Abfrage kann in der darauffolgenden Spalte Abfrage für Standardauswahl wiederum ein gültiges SQL-Statement hinterlegt werden. Bei der Auswahl des Eintrags durch Element(e) kann dort stattdessen ein einzelnes Element ausgewählt werden.
Im Bereich Ziel wird definiert, wohin die Daten kopiert werden sollen. Die Einstellmöglichkeiten entsprechen denen des Bereichs Quelle.
Aktionen
Aktion Kopieren/Verschieben
Im Bereich Aktionen wird definiert, welche Kennzahlen verarbeitet werden sollen. Über einen Klick auf den Menüeintrag Neue Aktion… wird zunächst eine Kennzahl ausgewählt, welche in die Spalte Quelle und Ziel übernommen wird. In der Spalte Aktion wird bestimmt, ob ein Wert kopiert, verschoben oder mit einem festen Wert gesetzt werden soll.
In den Spalten Quelle und Ziel kann die zu verarbeitende Kennzahl geändert werden. Die Spalte Sichtbar steuert die Sichtbarkeit der Aktion im Kopierdialog. In der Spalte Ziel berechnen kann definiert werden, ob der Wert unverändert kopiert (Eintrag Keine Änderung) oder gemäß eines Operators vor dem Kopieren verändert werden soll (Eintrag Gemäß Operator). Bei der Auswahl des Eintrags MDX kann über einen SQL-Editor ein gültiges SQL-Statement zur Verarbeitung des Wertes genutzt werden.
In der Spalte Ziel löschen kann angegeben werden, ob der Zielwert gelöscht werden soll. Das ist vor allem dann relevant, wenn der Quellwert keinen Wert enthält, im Zielbereich aber bereits ein Wert existiert. Ein Aktivieren dieses Häkchens würde in diesem Fall ein Überschreiben des Zielwertes mit NULL nach sich ziehen. Die Spalte Ergebnis addieren steuert, ob der zu kopierende Quellwert auf den Zielwert addiert oder der Zielwert überschrieben werden soll. Die Wertweitergabe funktioniert in Verbindung mit relationalen Modellen leider nicht. In der Spalte Quelle löschen kann ein Löschen der Quellwerte nach dem Kopieren aktiviert werden.
Wurde in der Spalte Ziel berechnen der Eintrag Gemäß Operator gewählt, können anschließend Operator (Spalte Operator) und Operand (Spalte Operand) gewählt werden.
Aktion Setzen (aggregierten Wert)
Sollen Wertebereiche mit einem vorgegebenen Wert befüllt werden, kann in der Spalte Aktion der Eintrag Setzen (aggregierten Wert) gewählt werden.
Eine Quellkennzahl kann in diesem Fall nicht definiert werden, stattdessen wird in der Spalte Ziel berechnen definiert, ob ein in der Spalte Operand angegebener oder ein per SQL abgefragter Wert kopiert werden soll. Es wird hier von einem aggregierten Wert gesprochen, weil dieser Wert nicht eins zu eins in jede Zelle des Zielbereichs kopiert wird, sondern jeweils nur ein Teil, vergleichbar mit der Splashing-Funktion in OLAP-Datenbanken. In Summe ergeben die Werte aller kopierten Zellen den Gesamtwert. Ausschlaggebend ist hierbei die Anzahl der Zellen im Zielbereich. Soll ein Wert von 100 auf zehn Produkte verteilt werden, wird auf jedes Produkt ein Wert von 10 geschrieben.
Aktion Setzen (Zellen)
Die Funktionsweise des Eintrags Setzen (Zellen) in der Spalte Aktion gleicht der des Eintrags Setzen (aggregierten Wert). Hierbei wird der angegebene Wert aber auf jede Zelle des Zielbereichs kopiert.
Wurden alle Einstellungen für den Kopierprozess vorgenommen, kann die Definition mit einem Klick auf den Menüeintrag Ausführen… getestet bzw. ausgeführt werden. Diese Funktion sollte allerdings nur von Administratoren genutzt werden. Über den Button Ok werden alle Einstellungen gespeichert und der Dialog geschlossen.
Prozessausführung
Kopierprozess zuweisen
Damit die definierten Kopierprozesse von den Anwendern ausgeführt werden können, müssen diese zuvor für die Anwender sichtbar gemacht werden. Voraussetzung dafür ist, dass in den Berichtseigenschaften eines Berichts auf der Registerkarte Dateneingabe das Häkchen Dateneingabe zulassen aktiviert ist und im Bereich Prozesse ein oder mehrere solche Prozesse dem Bericht zugewiesen worden.
Anschließend muss der Bericht im Modus Viewer geöffnet werden. Durch Aktivieren der Funktion Eingabe starten wird der Eingabemodus aktiviert und über das Menü Prozess ausführen kann ein Kopierprozess aufgerufen werden. Hinweis: Dieser Menüeintrag ist nur im Modus Viewer sichtbar und kann nur nach dem Starten der Eingabe ausgewählt werden.
Kopierprozess ausführen
Nach dem Aufruf des entsprechenden Eintrags erscheint das Fenster Prozess ausführen. Hier hat der Anwender die Möglichkeit im Bereich Ausführungskontext für die definierten Dimensionen ein Quell- und ein Ziel-Element auszuwählen. Die Auswahl wird über eine Liste zur Verfügung gestellt, wie im Prozessdefinitionsdialog definiert. Im gezeigten Beispiel wurde als Quelle die Vertretergruppe 1 und als Ziel die Vertretergruppe 2 gewählt.
Im Bereich Aktionen wird angezeigt, welche Aktion ausgeführt wird, Im Beispiel wird die Kennzahl Umsatz mit dem Wert 6.000 kopiert. Dieser Wert ergibt sich aus der Summe der Umsätze der einzelnen Produkte aus der Quellsicht (siehe Abb. 16). Quell- und Zielwert unterscheiden sich nicht, wie in der Prozessdefinition angegeben (siehe Abb. 14). Im unteren Bereich des Fensters wird angezeigt, dass 22 Zellen im Zielbereich betroffen sind, das entspricht genau der Anzahl der angezeigten Produkte in der Zeilenachse des Berichts Dateneingabe nach Produkten. Durch Klick auf den Button Ausführen wird der Kopierprozess gestartet. Ein Fortschrittsbalken zeigt den aktuellen Status während der Ausführung an. Nach Beendigung des Kopierprozesses wird im unteren Bereich des Fensters über das Ergebnis der Prozessausführung informiert. Durch Klicken auf den Button Schließen wird das Fenster geschlossen.
Wird vor dem Aufruf des Kopierprozess im Bericht bereits die Zielsicht eingestellt (im Beispiel Vertretergruppe 2), können nach dem Beenden des Prozesses gleich das Ergebnis kontrolliert und die Werte übernommen oder verworfen werden.
Unter der Haube
Wie bereits in Abschnitt 2 erwähnt, wird beim Ausführen der Kopierprozesse für jeden zu verarbeitenden Wert eine Prozedur namens P_Update_PIV_* aufgerufen, welche in der zugrunde liegenden Datenbank vorhanden sein muss. Der * steht dabei für den Namen der Tabelle oder der Sicht, auf der der angezeigte Bericht basiert. Im Beispiel heißt diese Sicht V_D_Fact und der Prozeduraufruf entsprechend P_Update_PIV_V_D_Fact. Um die Daten in unserem Beispiel zu kopieren, wurden drei Aufrufe benötigt, nämlich genau für die drei Werte in der Spalte Umsatz für Vertretergruppe 1. Diese einzelnen Aufrufe können im SQL.log angezeigt werden.
---- 21.01.2014 17:01:26 ---- P_Update_PIV_V_D_Fact @Product_ID=P1 @Sales_ID=V2 @Color_ID=C1 @Month_ID=200912 @Customer_ID=Geo35 @ValueType_ID=I @TransactionID=3739deb1-de43-42a4-a81b-dc510a449509 @StepNumber=0 @MeasureName=Revenues @NewValue=1000 @ErrorDesc= @ReturnValue=0 Execution Time: 0,013s ---- 21.01.2014 17:01:26 ---- P_Update_PIV_V_D_Fact @Product_ID=P10 @Sales_ID=V2 @Color_ID=C1 @Month_ID=200912 @Customer_ID=Geo35 @ValueType_ID=I @TransactionID=3739deb1-de43-42a4-a81b-dc510a449509 @StepNumber=0 @MeasureName=Revenues @NewValue=2000 @ErrorDesc= @ReturnValue=0 Execution Time: 0,003s ---- 21.01.2014 17:01:26 ---- P_Update_PIV_V_D_Fact @Product_ID=P11 @Sales_ID=V2 @Color_ID=C1 @Month_ID=200912 @Customer_ID=Geo35 @ValueType_ID=I @TransactionID=3739deb1-de43-42a4-a81b-dc510a449509 @StepNumber=0 @MeasureName=Revenues @NewValue=3000 @ErrorDesc= @ReturnValue=0 Execution Time: 0,003s