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

Berichtsmappengenerator im Publisher

Mit dem Berichtsmappengenerator können im Publisher ausgewählte Berichte innerhalb einer DeltaMaster-Sitzung unter Berücksichtigung verschiedener Blickwinkel systematisch vervielfältigt und geordnet werden. Einige wenige Basisberichte reichen aus, um automatisiert eine übersichtliche und strukturierte Berichtsmappe mit informativen Detailanalysen zu erzeugen!

Arbeiten mit dem Publisher

Der Publisher ist diejenige Komponente unserer Business-Intelligence-Software DeltaMaster, die für die automatisierte, zeitgesteuerte und an den Empfänger adaptierte Erstellung und Verteilung von Berichten in diversen Formaten (z. B. DeltaMaster-Sitzung, mobiler Bericht, Word, PDF, Excel, HTML, …) und Formen (z. B. E-Mail, Dateiablage, Repository, FTP, Service, …) verantwortlich zeichnet.

Der Berichtsmappengenerator soll auf diese Beispielanwendung losgelassen werden.

Beispielanwendung mit aufgeklappter Ordnerstruktur

DeltaMaster Publisher ist ein Werkzeug mit vielen Einsatzmöglichkeiten, die den Rahmen eines einzelnen Blogbeitrags sprengen würden: Für einen Überblick der grundsätzlichen Funktionen steht in der Hilfe unter Handbücher/„Erweiterungen und Zusatzprodukte“ das Dokument „Handbuch DeltaMaster Publisher“ zur Verfügung.

Hier in diesem Beitrag konzentriere ich mich auf den Berichtsmappengenerator, der vielleicht im Normalbetrieb gar nicht so häufig zum Einsatz kommt. Oft genug kann er aber dann eben doch genau die benötigte Funktionalität liefern, um spezielle Kundenanforderungen abzubilden.

Mit dem Berichtsmappengenerator können wir jeden beliebigen Bericht in einer gegebenen Sitzung systematisch und nach Wunsch mit verschiedenen Sichten variieren.

Verschiedene Sichtfilter könnten wir natürlich auch in der interaktiven Analyse einstellen und sogar vorberechnet simultan in mehreren Berichten in Multiples gleichzeitig berücksichtigen. Trotzdem kann es manchmal von Vorteil sein, eine Kollektion von vielen erzeugten Berichten bereits gut strukturiert vorzuhalten.

Sämtliche Ergebnisse können wir automatisiert in einer einzigen neuen Sitzung ablegen (auch als vorberechnete Offline-Sitzung) oder als Exportdatei (z. B. im Format Powerpoint, PDF, Word) abspeichern. Dies soll möglichst übersichtlich und strukturiert geschehen.

Heute geht es deswegen vor allem um die Lage und Sortierung von generierten Berichten.

Zur Illustration habe ich die oben sichtbare Beispielanwendung erstellt, die helfen wird, die Funktionsweise des Berichtsmappengenerators im Publisher zu erläutern.

Berichtsmappengenerator

Im Publisher legen wir einen neuen Job an, der sich aus der Beispielanwendung speist:

Jobdefinitionsfenster im Publisher

Jobdefinitionsfenster im Publisher

Wir stellen noch das Berichtsupdate auf September 2020; das Fenster “Berichte und Ordner” werden wir gleich betrachten. Das Berichtsupdate sorgt dafür, dass die Engine sämtliche Berichte unserer Sitzung für den Monat September 2020 berechnet.

Nun werfen wir einen Blick auf den Berichtsmappengenerator, den wir nach Wechsel in die Einstellungen des Jobs als Reiter vorfinden:

Berichtsmappengenerator

Berichtsmappengenerator

Wir sehen links eine Darstellung unserer Berichtsmappe im Original mit fettgedruckten Ordnern und Berichten in Normalschrift. Für das weitere Verständnis hilft es, sich die folgende Darstellung als Berichtsbaum anzuschauen:

Berichtsmappe als Baum

Berichtsmappe als Baum

Es existiert ein für den Anwender unsichtbarer Wurzelknoten “Root”, unter dem die Berichtsordner der ersten Ebene – hier Analysen, Mobile Berichte und Obsolet – verankert sind. In dieser Ebene dürfen nur Berichtsordner stehen, aber keine Berichte. Ein Bericht befindet sich immer in einem Berichtsordner und wir können somit keinen Bericht direkt unter “Root” anlegen.

Unterhalb von Berichtsordnern können auch weitere Berichtsordner angelegt werden. Berichtsordner und Berichte können wir in unteren Ebenen auch nebeneinander verwenden.

Exkurs: Woher stammen die IDs?

Berichte werden beim Anlegen in DeltaMaster intern aufsteigend nummeriert. Solange ein Bericht in der Sitzung ist, ist seine ID dauerhaft auf dem anfangs vergebenen Wert fixiert.

Für einen neu angelegten Bericht wird immer die um 1 erhöhte maximale ID aller noch vorhandenen Berichte verwendet. Löschen wir einen Bericht mit der aktuell maximalen ID, so stehen wieder alle ID-Werte über dem neu berechneten Maximum für die Vergabe zur Verfügung. Wird ein Bericht mit einer ID unterhalb des Maximums gelöscht, verbleibt eine Lücke in der Nummerierung.

In der Beispielsitzung habe ich die Berichte mit den IDs 1, 2 und 3 entfernt, nachdem Bericht 4 angelegt wurde.

Eine analoge, eigene Nummerierung besteht auch für die Ordner.

Die im Berichtsmappengenerator sichtbaren IDs stammen aus der Anlage in der DeltaMaster-Sitzung

Ordner- und Berichts-IDs in der DeltaMaster-Sitzung

In DeltaMaster können die IDs der Berichte und der Ordner durch Alt + Mouseover sichtbar gemacht werden. Hier sieht man die Berichts-ID (Report ID) mit dem Wert 4, die zum Bericht “RF Produkte Umsatz” gehört und die Ordner-ID (Report Folder ID) mit dem Wert 6, die zum Ordner “Mobile Berichte” passt.

Die fortlaufende Nummerierung der Berichte innerhalb der kleinen Quadrate erfolgt immer aufsteigend und lückenlos, spielt aber für den Berichtsmappengenerator keine Rolle.

Vorschau im Berichtsmappengenerator

Überaus hilfreich bei der Erstellung einer neuen Berichtsmappe mit iterierten Berichten ist die Vorschau, die Sie über das Feld Aktualisieren generieren. Nutzen wir diese Funktion zum jetzigen Zeitpunkt, so entsteht das folgende Bild:

Der Berichtsmappengenerator erzeugt zum jetzigen Zeitpunkt eine Kopie!

Zum jetzigen Zeitpunkt wird eine Kopie erzeugt!

Vergleicht man beide Seiten, ist kein Unterschied sichtbar: Führen wir den Job aus, entsteht eine Kopie der bisherigen Sitzung – allerdings mit dem Unterschied, dass wir alle Berichte auf September 2020 einstellen, also auf das Element, das wir im Berichtsupdate der Hauptseite gewählt haben.

Einschränkende Auswahl von Ordnern und Berichten

Nehmen wir nun einmal an, dass wir nur Berichte replizieren wollen, die etwas mit Umsatz zu tun haben. Diese befinden sich im Berichtsordner Umsatz mit der Ordner-ID 3.

Auf der Hauptseite können wir uns durch aktive Angabe von Ordnern auf die für uns relevanten Ordner der Sitzung beschränken. Hier wählen wir demzufolge den Ordner Umsatz aus:

Nur Berichte aus dem Ordner Umsatz sind für uns relevant

Nur Berichte aus dem Ordner Umsatz sind für uns relevant

Wechseln wir nun wieder zum Berichtsmappengenerator, hat sich die Vorschau geändert:

Nur der Ordner Umsatz landet in der neuen Berichtsmappe

Nur der Ordner Umsatz landet in der neuen Berichtsmappe

Nun haben wir nur noch den Ordner in der Auswahl, der die Berichte enthält, die uns in diesem angelegten Job interessieren und deren Vervielfältigung wir wünschen.

Hinweis: In der Jobdefinition muss die Default-Einstellung “Andere Ordner entfernen” aktiv bleiben.

Einzelne Berichte für den Berichtsmappengenerator auswählen

In unserer Anwendung möchten wir sowohl den Rangfolge-, als auch den Comparatorbericht vervielfältigen. Wären wir nur an der Rangfolge interessiert, hätten wir bei “Berichte und Ordner” auch nur die Rangfolge auswählen können:

Nur die Rangfolge soll relevant sein

Nur die Rangfolge soll relevant sein

Da ein einzelner Bericht aber nie direkt unter dem Wurzelknoten (Root) stehen darf, sondern selbst immer in einem Ordner stehen muss, wird in diesem Fall der Ordner Umsatz ebenfalls berücksichtigt, allerdings ohne den Comparatorbericht:

Berichtsmappengenerator mit Ordner Umsatz, aber ohne den Comparatorbericht

Mit Ordner Umsatz, aber ohne den Comparatorbericht

Im Folgenden haben wir nun wieder in der Berichts- und Ordnerauswahl den Ordner Umsatz ausgewählt. Somit haben wir in diesem Job die Ausgangssitzung effektiv auf den relevanten Ordner mit zwei Berichten eingeschränkt, brauchen aber die Ausgangssitzung selbst nicht zu bearbeiten oder zu kopieren.

Jetzt möchten wir den Berichtsmappengenerator für Iterationen nutzen.

Die Parameter und Steuerungsmöglichkeiten

Über “Neuer Eintrag” wird eine neue Zeile hinzugefügt, in der wir die notwendigen Informationen zu einem Iterator hinterlegen können. Im folgenden Bild haben wir bereits zwei Einträge erstellt:

In einem Eintrag im Berichtsmappengenerator legen wir fest, wie generiert werden soll

Hier legen wir fest, wie iteriert werden soll

Hier haben wir im Grafikprogramm die lange Zeile umgebrochen. Was können wir nun in den einzelnen Felder einstellen? Es folgt eine allgemeine Übersicht; die Details erläutere ich im Anschluss:

    • IteratorID: Das System vergibt eine fortlaufende ID.
    • ParentID: Wir benötigen die ParentID nur für Verschachtelungen.
    • Reihenfolge: bestimmt über einen Zahlenwert die Reihenfolge der Abarbeitung der Einträge. Ein Eintrag mit niedrigerem Wert wird zuerst bearbeitet.
    • Typ: Bericht oder Ordner: Wollen wir einen einzelnen Bericht oder gleich einen ganzen Ordner vervielfältigen? Die Einstellung “Ohne” verwenden wir bei Verschachtelungen.
    • Ordner-/Berichts-ID: Um welchen Ordner oder Bericht geht es?
    • Original löschen: den Quellbericht/-ordner nach Abarbeitung der Einträge beibehalten oder löschen?
    • Dimension/Hierarchie/Elemente: Über welche Elemente in welcher Reihenfolge iterieren wir bei einem gegebenen Eintrag?
    • Zielordner/Ziel-ID/Ziel-Index: Wo sollen die Ergebnisse landen?
    • inkl. Unterordner/inkl. Unterberichte: Wollen wir bei Ordnern Unterordner berücksichtigen und Berichte mitkopieren?
    • Zu Titel hinzufügen: das aktive Element innerhalb der Iteration dem Berichtsnamen in Klammern hinzufügen.
    • Aktiv: Hier können wir den Eintrag inaktiv schalten. Er wird dann nicht ausgeführt.

Vervielfältigen von Berichten im Berichtsmappengenerator

In der Option Typ können wir einen Bericht, einen Ordner oder “Ohne” auswählen. In diesem Beitrag legen wir den Schwerpunkt auf den Typ “Bericht”, die Typen “Ordner” und “Ohne” werde ich in einem späteren Forschungsblog-Beitrag ausführlicher behandeln.

Ein erster Einsatz des Berichtsmappengenerators mit Child

Wir betrachten zunächst den Rangfolge-Bericht der umsatzstärksten Produkte mit der ID 4 und möchten diesen detailliert für jede der vier Kunden-Regionen anlegen.

Dazu stellen wir Typ auf “Bericht” und geben als ID die 4 ein. Weiterhin nehmen wir die Kundendimension mit der passenden Hierarchie her und wählen die vier Regionen über den eingebauten Dimensionsbrowser (erreichbar über die drei Punkte …) aus. Als Zielordner haben wir Child angegeben, dabei bleiben Ziel-ID und Ziel-Index zunächst leer. “Original löschen” ist nicht aktiviert. Die Option „Zu Titel hinzufügen“ ist aktiviert.

Die Vorschau zeigt uns das folgende Ergebnis:

Der Berichtsmappengenerator iteriert über die Regionen und speichert das Ergebnis in einem Unterordner

Über die Regionen iterierte Rangfolge, abgelegt in einem Unterordner

Wir halten das Folgende fest: Die generierten Berichte erscheinen mit diesem Vorgehen in der gleichen Reihenfolge, wie sie im Dimensionsbrowser sichtbar ist – Süd, Nord, Ost, West. Mit “Child” legt der Berichtsmappengenerator direkt nach dem Quellbericht einen Ordner an – mit der nächsten frei verfügbaren Ordner-ID 7 – und in diesem Ordner landen die vier neuen Berichte mit den nächsten freien Berichts-IDs 10, 11, 12 und 13.

Da wir die Option “Zu Titel hinzufügen” aktiviert hatten, stehen die Elementnamen hinter dem ursprünglichen Titel in Klammern.

Alternativ kann man diese Ergänzung auch deaktivieren und die Berichtsnamen in der Ausgangssitzung mit dynamischen Ausdrücken wie <viewX> anreichern, die dann während der Iteration durch die gerade aktuell gültigen Elementnamen ersetzt werden.

Sibling

Bevor wir uns der Reihenfolge der vier Berichte widmen, schauen wir auf die alternative Auswahl “Sibling”:

Diesmal werden die 4 Berichte ohne Unterordner angelegt.

Über die Regionen iterierte Rangfolge ohne Unterordner

Auch hier werden die vier Berichte direkt nach dem Quellbericht angelegt, allerdings auf gleicher Höhe, ohne den Unterordner.

Der Anwender sollte diese aus einem Iterator-Eintrag stammenden Berichte als Einheit sehen. Zuerst generieren wir die vier Berichte in der gewünschten Reihenfolge, danach werden sie auf einen Schlag eingefügt und behalten somit die bestehende Sortierung bei.

Die Auswahl “Root” ist nur für iterierte Ordner gedacht, da der Anwender einen Bericht – wie oben bereits erwähnt – nicht direkt unter dem Wurzelknoten verankern kann. Verwenden Sie “Root” bei Berichten, wird darum ersatzweise das Verhalten wie bei “Sibling” übernommen.

Reihenfolge der iterierten Berichte zu einem einzelnen Eintrag

Wenn wir den eingebauten Dimensionsbrowser nutzen, erscheinen die vier Regionen immer wie im Modell – also zuerst Süd, dann Nord, Ost, West – , unabhängig von der Reihenfolge, in der der Anwender die Elemente anklickt. Dies ist die Sortierung nach den Keys der Elemente, die durch die Zahlen 1 (Süd), 2 (Nord), 3 (Ost) und 4 (West) bestimmt sind.

Wenn wir eine andere Reihenfolge wünschen, können wir das Feld Elemente direkt anpassen.

Hat das Feld “Elemente” den Fokus, können wir es mit F2 editieren.

Um zum Beispiel die Reihenfolge Nord, Ost, Süd, West (d. h., die Keys sollen in der Reihenfolge 2-3-1-4 erscheinen) zu erzwingen, nehmen wir anstelle des Ausdrucks

[Kunde].[Kunde].[Region].&[1],[Kunde].[Kunde].[Region].&[2],[Kunde].[Kunde].[Region].&[3],[Kunde].[Kunde].[Region].&[4]

nun

[Kunde].[Kunde].[Region].&[2],[Kunde].[Kunde].[Region].&[3],[Kunde].[Kunde].[Region].&[1],[Kunde].[Kunde].[Region].&[4]

Alternativ könnten wir in DeltaMaster in der Ausgangssitzung eine Elementauswahl als benannte Menge anlegen:

Eine benannte Menge der Regionen in der gewünschten Reihenfolge

Eine benannte Menge der Regionen in der gewünschten Reihenfolge

Ersetzen wir nun den Feldinhalt von “Elemente” durch den internen Namen der benannten Menge (im vorliegenden Fall [namedset]), so erhalten wir auch auf diesem Wege die gewünschte Reihenfolge.

Da wir auf einem OLAP-Cube unterwegs sind, kann in dem Feld Elemente auch jeder beliebige MDX-Ausdruck stehen, der in der angegebenen Hierarchie eine Menge von Elementen erzeugt. Das können auch dynamische Ausdrücke sein.

Mehrere Einträge zu einer Berichts-ID

Nehmen wir nun an, dass der Anwender die Umsatz-Rangfolge der Produkte auch für die drei Produkthauptgruppen erzeugen möchte. Wir generieren einen neuen Eintrag, der sich ebenfalls auf den Bericht mit der ID 4 bezieht und verwenden bei beiden Einträgen “Sibling”. Die Vorschau zeigt uns das folgende Bild:

Die drei neuen Produkthauptgruppen-Berichte werden direkt hinter dem Quellbericht eingefügt

Die drei neuen Produkthauptgruppen-Berichte werden direkt hinter dem Quellbericht eingefügt

Wie man sieht, landen die drei neuen Berichte wieder direkt hinter dem Quellbericht und somit vor den vier Regionsberichten, die hier ihrerseits dank “[namedset]” in der gewünschten Reihenfolge erscheinen. Die Reihenfolge der drei Produkthauptgruppen-Berichte selbst stimmt wieder mit der Anordnung im Modell überein.

Der Berichtsmappengenerator bearbeitet diese zwei Einträge sozusagen ohne Gedächtnis, also Zeile für Zeile, und ignoriert die Tatsache, dass sie sich auf die gleiche Berichts-ID beziehen. Diese Logik leuchtet sofort ein, wenn man sich vorstellt, dass die beiden Einträge ja nicht zwingend direkt aufeinanderfolgen müssen.

Möchte man erreichen, dass die Regions-Berichte zuerst erscheinen, gibt es zwei Möglichkeiten. Erstens kann man über einen Austausch der Werte im Reihenfolge-Feld die Abarbeitung der Einträge umdrehen. Da wir dann zuerst über die Produkthauptgruppen iterieren, schiebt der nun später ausgeführte Regions-Block die Produkthauptgruppen nach unten.

Die zweite Möglichkeit arbeitet mit den Feldern Ziel-ID und Ziel-Index.

Wirkung von Ziel-ID und Ziel-Index im Berichtsmappengenerator

Liegt ein Bericht vor, der iteriert wird, kann der Anwender mit Ziel-ID die Ordner-ID eines Ordners angeben, in dem die Berichte gespeichert werden sollen. Ziel-Index gibt die Position an. Nach der ersten Iteration über die Regionen sieht die Vorschau folgendermaßen aus:

Vorschau mit dem ersten Eintrag, zweiter Eintrag inaktiv

Vorschau mit dem ersten Eintrag, zweiter Eintrag inaktiv

Der zweite Eintrag ist momentan noch inaktiv gesetzt (gemäß Checkbox in der letzten Spalte). Mit Ziel-ID = 3 geben wir an, dass die neuen Berichte auch im Ordner Umsatz landen sollen. Hier könnten wir das Feld auch leer lassen, da wir uns mit dem Quellbericht in diesem Ordner befinden.

Der gewählte Ordner muss immer in der Vorschau bereits sichtbar sein. Geben wir eine andere Ziel-ID als 3 an, werden wir die Berichte nicht sehen!

Mit dem zweiten Parameter Ziel-Index legen wir fest, an welcher Stelle wir die neuen Berichte einfügen wollen. Im vorliegenden Fall fügen wir diese bei Position 6 ein, also nach dem Quellbericht und den vier Regions-Berichten, aber vor dem Comparator-Bericht, den wir somit nach hinten schieben:

Der Berichtsmappengenerator hat die Berichte vor dem Comparator-Bericht eingefügt.

Zweiter Eintrag ausgeführt

Hier gab es nur einen einzigen Ordner, in dem wir die Berichte ablegen konnten. Es ist aber möglich, sich auf frisch generierte Ordner aus vorherigen Iterator-Einträgen zu beziehen!

Ziel-ID und Ziel-Index in einem komplexeren Beispiel

Wir ändern den ersten Eintrag auf Zielordner Child anstelle von Sibling. Die vier Regions-Berichte werden nun in einem neuen Unterordner mit der automatisch zugewiesenen ID 7 abgelegt. Der Name des Ordners ist bei der Option Child immer mit dem Berichtsnamen identisch. Die folgenden zwei Einträge mit den IDs 176 und 177 haben wir noch nicht aktiviert:

Der Berichtsmappengenerator hat einen Ordner mit der ID 7 angelegt.

Ein neuer Ordner mit ID 7 wurde angelegt

Hier haben wir schon beim ersten Eintrag mit dem Ziel-Index = 3 festgelegt, dass er am Ende und somit hinter den beiden Quellberichten erscheinen soll. Die Ziel-ID = 3 können wir hier angeben, müssen es aber nicht, da wir uns bereits in diesem Ordner befinden.

Bei der Iteration über die drei Produkthauptgruppen im zweiten Eintrag können wir uns nun bereits auf diesen neu angelegten Ordner beziehen. Neu angelegte Ordner aus vorherigen Einträgen darf man als Ziel von Berichten verwenden:

Die Produkthauptgruppen kommen zu den Berichten im Ordner 7

Die Produkthauptgruppen kommen zu den Berichten im Ordner 7

Im zweiten Eintrag legen wir mit Ziel-ID = 7 fest, dass die drei Produkthauptgruppen auch im Ordner 7 landen sollen, und zwar hinter den anderen vier Regions-Berichten. Das erreichen wir, indem wir den Ziel-Index auf 5 setzen. Hier ist es gut zu wissen, dass wir ein Einfügen am Ende nicht nur durch die 5, sondern auch durch jede andere höhere Zahl (6 und mehr) erzwingen können.

Ein Ziel-Index = 1 bewirkt ein Einfügen am Anfang; jeder Index von 2 bis 4 ergäbe eine unerwünschte Vermischung der Elemente.

Ziel-ID und Ziel-Index korrekt einsetzen

Hier wurde eben bei Nutzung der angelegten Einträge implizit vorausgesetzt, dass an der Ordnerstruktur der Quellsitzung in Zukunft nicht mehr gewackelt wird. Nur dann können wir uns bei der Referenz auf den Ordner mit der ID 7 auch wirklich sicher sein, den gewünschten, dynamisch erzeugten Ordner anzusprechen.

Auf der sicheren Seite bleibt man auf jeden Fall, wenn man bereits in der Ausgangssitzung leere Ordner für die zukünftig abzulegenden Berichte erstellt, also die Ordnerstruktur bereits vorhält. Dann kann man sich bei der Berichtserzeugung auf diese nun unveränderlichen Ordner-IDs beziehen.

Replizieren wir – wie im eben aufgeführten Beispiel – einen Bericht in einem anderen, per Ziel-ID zugewiesenen Ordner, ist es sinnvoll, den Ziel-Index immer mitanzugeben. Lässt man dieses Feld nämlich frei, verwendet das System die ursprünglich vorgesehene Position im Ausgangsordner, die im Allgemeinen nicht passen wird. Hier wäre dies die zweite Position gewesen, direkt nach dem Rangfolge-Bericht.

Ohne angegebenen Ziel-Index wären somit die drei Produkthauptgruppen direkt nach Nord, aber noch vor Ost, Süd und West aufgeführt.

Neuer Ordner für Comparator-Berichte

In einem letzten Schritt iterieren wir die Comparator-Analyse auch über die drei Produkthauptgruppen, legen aber dafür mit Child einen neuen Ordner an:

Comparator-Analyse über die drei Produkthauptgruppen in einem Unterordner abgelegt

Comparator-Analyse über die drei Produkthauptgruppen in einem Unterordner abgelegt

Da der Ordner als letzter erscheinen soll, erhält er den Ziel-Index = 4. Relevant beim Zählen sind nur die Ordner und Berichte auf der ersten Ebene im Ordner Umsatz, aber nicht die Elemente in den Unterordnern.

Original löschen und Ziel-Index

Zum besseren Verständnis der zu vergebenden Werte für den Ziel-Index bei Verwendung der Option “Original löschen”: “Original löschen” ist ein Postprocessing-Befehl, der erst nach Abarbeitung aller Einträge durchgeführt wird.

Ist somit beim ersten Eintrag zur Berichts-ID 4 “Original löschen” aktiviert, so steht der Bericht trotzdem noch für den zweiten Eintrag, der sich auch auf diese Berichts-ID 4 bezieht, zur Verfügung.

Weiterhin heißt dies, dass die Quellberichte beim Zählen für den Ziel-Index berücksichtigt werden müssen, auch wenn wir sie zum Schluss löschen wollen. Es ist deshalb ratsam, die Option “Original löschen” erst zu aktivieren, nachdem alle Ordner und Berichte an der gewünschten Stelle stehen. Diese Positionen lassen sich leichter ermitteln, wenn die Quellberichte sichtbar sind.

Jobausführung

Starten wir den Job auf der Hauptseite und lenken die Ausgabe in ein das-File (Berichtsformat “das” und Verteilungsart “File”), so erhalten wir unsere gewünschten Berichte:

So sieht die generierte DeltaMaster-Sitzung aus!

Sollten wir der Meinung sein, dass wir in der Rangfolge nur die Top-5 – und nicht wie hier die Top-10 – benötigen oder Rabatt in allen Rangfolgen als zusätzliche Spalte anzeigen wollen, so müssen wir nur den Bericht “RF Produkte Umsatz” der Quellsitzung ändern und den Job einmal erneut ausführen und schon haben wir eine aktualisierte Sitzung.

Bei einem Job, der sich auf den Berichtsmappengenerator stützt, haben wir somit einen entscheidenden Vorteil. Ist die passende Struktur einmal angelegt, müssen wir danach eine gewünschte Änderung nur bei einem Basisbericht durchführen. DeltaMaster Publisher überträgt dann über den Job die gewünschten Änderungen auch auf die vom Basisbericht abgeleiteten Berichte.

Ausblick

Berichte können wir nicht nur über Elemente einer einzigen Dimension iterieren, sondern wir dürfen auch Kombinationen von Elementen aus zwei oder mehr Dimensionen bilden. Wie die Verschachtelung funktioniert und wie man gleich komplette Ordner vervielfältigen kann, erläutere ich vielleicht einmal an einem Anwendungsbeispiel in einem eigenen Blogbeitrag.

Um die Zeit bis dahin zu überbrücken, könnten Sie sich den Forschungsblog-Beitrag über Warenkorbanalysen anschauen, in dem wir das Ergebnis einer solchen Verschachtelung im Berichtsmappengenerator zeigen – allerdings ohne technische Details zur Erstellung.

Nachtrag: Inzwischen ist der versprochene Beitrag Berichtsmappengenerator im Publisher für Ordner anwenden erschienen. Viel Spaß bei der Lektüre!