Oft sehen wir, dass teilweise Dinge manuell vorgenommen werden, obwohl man diese automatisieren kann. Häufig wird dabei der Berichtsmappengenerator unterschätzt oder nicht bedacht, sodass wir mit diesem Blogbeitrag gerne einmal vorstellen möchten, was man mit wenigen Schritten bereits erreichen kann. Gute Einführungen bieten dafür die DeltaMaster clicks! 06/2006 und 01/2012. An dieses Grundlagenwissen über den Berichtsmappengenerator knüpfen wir an und zeigen an einem Beispiel, welche Funktionen man nutzen kann, um ganze Ordnerstrukturen aufzubauen.
Zielsetzung
Wir haben eine Analysesitzung mit dem folgenden Berichtsaufbau:
Nun wollen wir für jede Kundenregion einen Übersichtsbericht (Quelle: Bericht 1) erhalten und darunter in jeweils einem Unterordner pro Kundenregion die Detailberichte für jeden Kunden in dieser Kundenregion (Quelle: Bericht 3). Alle anderen Berichte benötigen wir nicht und dienen nur für die interaktive Anzeige. Man kann die beschriebene Vorgehensweise auch innerhalb komplexer Analysesitzungen verwenden.
Nachfolgend werfen wir einen kleinen Blick auf das gewünschte Ergebnis:
Vorbereitung der Umsetzung
- Was müssen wir also tun?
- Wir müssen den Bericht 2 entfernen.
- Wir müssen den Bericht 1 für jede Region vervielfältigen.
- Wir brauchen weiterhin für jede Region einen Unterordner im Ordner „relevanter Ordner“.
- Wir brauchen innerhalb jedes Unterordners jeweils den Bericht 3 für jeden Kunden der jeweiligen Kundenregion.
Umsetzung
Ordner entfernen
Dieser Punkt ist bereits ohne Berichtsmappengenerator umsetzbar.
Wir wählen den Ordner „relevanter Ordner“ als zu exportierenden Ordner aus und haben zusätzlich noch die Funktion „andere Ordner entfernen“ für den Job aktiviert. Diese Option ist standardmäßig aktiviert.
Nicht benötige Berichte entfernen
Im Berichtsmappengenerator gibt es die Spalte „Original löschen“. In diesem speziellen Fall soll kein Output generiert werden. Letzteres erreichen wir, wenn wir über eine leere Menge iterieren (s. Einstellung im Feld „Elemente“ im Screenshot):
Bericht vervielfältigen
Dies wird bereits in den genannten DeltaMaster Clicks ausführlich beschrieben, sodass wir hier nicht näher darauf eingehen und das folgende Zwischenergebnis erhalten:
Abbildung 4: Duplizieren eines Berichts
Ordnerstruktur und Berichte anlegen
Nun müssen wir eine Ordnerstruktur anlegen (für jede Kundenregion einen Unterordner) und dann darunter den Bericht mit der ID 2 für die jeweiligen Kunden hinzufügen.
Die Aufgabe lässt sich mit zwei weiteren Iteratoren in unserem Beispiel lösen:
Abbildung 5: Erstellen der Unterordnerstruktur mit dazugehörigen Berichten
Der erste Iterator als Typ „Ohne” sorgt dafür, dass über die Kundenregionen iteriert wird. Er hat aber keinen Output.
Bei dem zweiten Iterator wird die ParentID mit der IteratorID mit dem Typ „Ohne“ gefüllt. Dadurch werden diese beiden Iteratoren ineinander verschachtelt ausgeführt und mit dem Befehl Descendants(,3) erhalten wir die Kunden der jeweiligen Kundenregion.
Damit wurde das Ziel schon erreicht, aber die Anordnung in der Vorschau ist noch nicht so, wie es gewünscht war:
- Die vier Deckungsbeitagsschema-Berichte sollen oberhalb der Unterordner zu sehen sein.
- Die Reihenfolge der Unterordner stimmt nicht mit der Anordnung der Kundenregionen in der Dimension überein.
Reihenfolge Berichte zu Unterordner
Wir ändern die Ausführungsreihenfolge in der Spalte Reihenfolge, sodass Iterator 2 für die Übersichtsberichtsduplizierung als letztes ausgeführt wird. Dadurch zeichnet der Publisher die Berichte als letztes und hängt sie oben an.
Abbildung 6: Anordnung verbessern
Reihenfolge der Regionen
Generell hängt der Publisher die Dinge stets oben innerhalb eines Ordners an. Damit nun bei der verschachtelten Ausführung die Reihenfolge der Kundenregionen auch korrekt ist, muss man die Reihenfolge der Elemente im Iterator 3 einmal umdrehen. Dies kann per MDX mit der Funktion ORDER erreicht werden, z.B.
ORDER([Kunde].[Kunde].[Region].members,[Kunde].[Kunde].currentMember.Properties("Key"),DESC),
Ein manueller Austausch funktioniert auch, wird hier aber nicht genauer betrachtet.
Damit erhalten wir das in der Zielsetzung vorgestellte Ergebnis.
Anwendungsfall und Fazit
Wenn man eine Verbindung zur Datenbank hat, ist ein Vervielfachen eines Berichts natürlich nicht so spannend. Bei Exporten nach PDF und Office hätten wir uns die Unterordnerstruktur sparen können, da diese nicht exportiert wird.
Ideal geeignet ist dieses Beispiel also für Fälle ohne Verbindung zur Datenbank, aber mit einer Oberfläche, in der die Ordnerstruktur angezeigt wird. Die Berichtsformate offline und mobile sind Beispiele. Damit hat man automatisiert Daten strukturiert offline zur Verfügung ohne ständiges manuelles Eingreifen, auch wenn sich etwas in der Kundendimension ändert.
Natürlich lassen sich Teile des Beispiels in vielen weiteren Anwendungsfällen nutzen.
Behandelt haben wir hier nur zwei Funktionen neben den Grundfunktionalitäten, nämlich das Löschen von Objekten und die verschachtelte Iteration. Mit diesen zwei Erweiterungen kann man sehr viel automatisieren.
Hinweis: Die Publisherdatenbank (Version 6.2.6) und die dazugehörigen Analysesitzungen Ausgangssituation und Ergebnis stehen als Material zur Verfügung. Sie können bei Bissantz angefragt werden. Dort kann jede Einstellung nachvollzogen werden, da die Bilder nur die wichtigsten Einstellungen zeigen.
Kommentare
Sie müssten eingeloggt sein um Kommentare zu posten..