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

Der Berichtsmappengenerator

Wir sehen immer wieder ausgefeilte Berichte, die informationsdicht das Geschäft unserer Kunden darstellen. Nahazu jede sich stellende Frage wird bedacht. Es macht Spaß, die Berichte zu lesen.
Es gibt nun immer wieder die Anforderung, dass diese Berichte für gewisse Produktgruppen oder Zeiträume oder auch Verantwortlichkeiten iteriert werden müssen. Jetzt schlägt die Stunde des Berichtsservers mit dem Berichtsmappengenerator. Dieser Blogbeitrag erklärt das Modul.

DeltaMaster Berichtsserver

Unser Berichtsserver ist für periodisch wiederkehrende Aufgaben gedacht. In gewissen Abständen wird ein Job aufgerufen, der Sitzungen aktualisiert oder Berichte verteilt.

Um dies zu erledigen muss ein Job im Berichtsserver eingerichtet werden. Die Konfiguration eines solchen Berichtsserverjobs wird im folgenden Bild dargestellt:

2012-05-11_crew_Hauptfenster

Abb. 1: Hauptfenster des DeltaMaster Berichtsservers

Jobs können durch Auswahl des Jobs und anschließendem Drücken von Ausführen oder durch Eingabe Reportserver.exe gefolgt von der Jobnummer auf der Kommandozeile gestartet werden.

Im dreiteiligen Definitionsfenster wird zuerst im oberen Bereich Jobs eine Berichtsquelle (Analysesitzung) ausgewählt. Optional können OLAP-Server, OLAP-Benutzer und OLAP-Passwort sowie der SQL-ConnectionString geändert werden.

Anschließend werden das Berichtsformat und die Verteilungsart festgelegt.

Legt man einen SQL-Aktualisierungsbefehl fest, wird dieser VOR Ausführung des eigentlichen Jobs gestartet.

Hat man eine Jobgruppe (z.B. Monatsberichte) und trägt den Namen entsprechend ein, so werden alle (aktiven) Jobs der Jobgruppe ausgeführt, wenn man den Berichtsserver über die Kommandozeile mit dem Jobgruppennamen als Parameter startet.

Für jeden Job können Berichtsupdates eingestellt werden. Weiterhin ist es möglich nur bestimmte Berichtsordner im Job zu berücksichtigen. Diese Einstellung hat Auswirkungen auf den weiter unten folgenden Berichtsmappengenerator!

Je nach Anforderung muss jetzt in den Berichtsgenerator oder den Berichtsmappengenerator “gesprungen” werden.

Der Berichtsgenerator wird meist zur Personalisierung der Berichte vewendet. Es wird eine Datei/E-Mail je Element im Berichtsgenerator erzeugt. Der Berichtsmappengenerator wird zur Vervielfältigung von Berichten innerhalb einer Datei verwendet.

Der Berichtsmappengenerator

Im Berichtsmappengenerator werden Iteratoren verwendet, um die Berichtsvervielfältigungen zu definieren. Die Einrichtung soll anhand zweier Beispiele erläutert werden.

2012-05-11_crew_Iterator

Abb. 2: Iterator

  1. Es soll eine Berichtsmappe für jede unserer Vertretergruppen erzeugt werden.

Für den Iterator wird der Typ Folder eingestellt, wenn man einen ganzen Ordner vervielfältigen will. Will man dagegen nur einen einzelnen Bericht iterieren, wird als Typ Report eingestellt. Der zu verwendende Ordner (Typ Folder) bzw. Bericht (Typ Report) wird in das Feld Ordner-/Berichts-ID eingetragen. Die richtige ID findet man im Fenster Berichtsmappe (Original).

2012-05-11_crew_berichtsmappe

Abb. 3: Berichtsmappe

Will man neben dem eigentlichen Ordner auch die dazu gehörigen Berichte verwenden, muss man darauf achten, dass die Optionen inkl. Unterberichte und ggf. inkl. Unterordner aktiviert sind. Weiterhin muss entschieden werden, ob man das Original behalten möchte oder nicht. Dazu ist die Option Original löschen entsprechend zu setzen.

In den Feldern DimensionHierarchie und Elemente werden die Iteratorelemente wie gewohnt ggf. dynamisch hinterlegt. Weiterhin kann man über die Option zu Titel hinzufügen entscheiden, ob die Iteratorelemente in Klammern an den Berichtstitel angefügt werden.

2012-05-11_crew_Zielordner

Abb. 4: Zielordner

Für die Anordnung der Berichte im Ziel kann angegeben werden, wohin sie generiert werden.

Ausgehend von der Quelle kann Root (höchste Ebene), Sibling (selbe Ebene) oder Child (nächst niedrigere Ebene) gewählt werden. Dabei ist zu beachten, dass das Einfügen immer “danach” erfolgt.

Hat man alle Einstellungen vorgenommen, kann man das Ergebnis der Iteratoren durch klicken auf Aktualisieren in der Vorschau ansehen.

2012-05-11_crew_Berichtsmappe_Vorschau

Abb. 5: Berichtsmappe (Vorschau)

  1. Da die Vertretergruppen produktorientiert arbeiten, soll zusätzlich nach den Produkthauptgruppen differenziert werden.

Ausgangspunkt bildet Beispiel 1.

Da wir von der ersten Iteration die zu erzeugenden Berichte nicht benötigen, nehmen wir die Optionen Originale löschen und inkl. Unterberichte heraus. Es wird ausschließlich die gewünschte Ordnerstruktur erzeugt.

2012-05-11_crew_Berichtsmappe_Vorschau_2

Abb. 6: Berichtsmappe (Vorschau)

In einem zweiten Iterator bauen wir die Unterscheidung nach den Produkthauptgruppen ein. Dazu müssen wir den Berichtsmappengenerator animieren, den ersten Schritt als Grundlage für den jetzt einzustellenden Schritt heranzuziehen. Dies geschieht durch Eintragen der Iterator-ID des ersten Schrittes (hier 4) in das Feld Parent-ID.

2012-05-11_crew_Berichtsmappengenerator

Abb. 7: Berichtsmappengenerator

Ist alles eingestellt, so ergibt sich eine doppelt geschachtelte Berichtsmappe.

2012-05-11_crew_Berichtsmappe_Vorschau_3

Abb. 8: Berichtsmappe (Vorschau)

Hinweise:

  • Berichtsserver offline betreiben

Trägt man in das Feld OLAP-Server _OFFLINE_ ein, so kann man den Berichtsserver auch ohne die Verbindung zu einer Datenbank verwenden. Berichtsupdates und der Berichtsmappengenerator sind so natürlich nicht möglich.

  • Modellsynchronisation

Die Option Modellsynchronisation einer Analysesitzung wird bei Verwendung des Berichtsservers analog zur Einstellung im Feld Modellsynchronisation aktiviert oder deaktiviert.

  • Ordneriteratoren und Reportiteratoren

Kombiniert man beide Iteratortypen in einem Job, so können bei ungünstiger Optionsauswahl unerwünschte Ergebnisse erzeugt werden.