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

Wiederverwendung von Flexreports

Flexreports sind schicke Berichte, deren Formatierung allerdings etwas Zeit verschlingen kann. Umso wertvoller wäre es, wenn diese Formatierungen schnell und unkompliziert im Sinne einer Vorlage für ähnlich aufgebaute Berichte innerhalb einer Analysesitzung wiederverwendet werden können. Noch interessanter wäre der Gedanke, dass Flexreport-Vorlagen auch von einer in die andere Analysesitzung übernommen werden können. Nicht immer hilft hierbei der Modellimport – insbesondere dann nicht, wenn Analysesitzungen auf unterschiedlichen Datenquellen aufsetzen. Ob also der Wunsch der Vater des Gedanken bleibt oder ob Sie in Zukunft viel Zeit bei der Erstellung bzw. Wartung von Flexreports sparen, hängt davon ab, ob Sie den folgenden Blogbeitrag „Wiederverwendung von Flexreports“ studieren. Viel Spaß dabei!

Herausforderung

Flexreports dienen im Wesentlichen der weitergehenden Formatierung von Pivottabellen oder der Zusammenführung von Daten mehrerer Pivottabellen in einen einzigen Bericht. Hierzu speichert der Flexreport zweierlei Information: Referenzen auf Pivottabellen und Formatierungen.

Wenngleich die Referenzen bei der erstmaligen Erzeugung eines Flexreports schnell und einfach erzeugt werden, so verschlingt die Formatierung und die nachträgliche Pflege von Referenzen vergleichsweise viel Zeit. Letztere ist aber sicher nicht verschwendet, denn das Ergebnis ist von hoher Qualität! Daher ist der Wunsch verständlich, dass ein ausgefeiltes Flexreportdesign als Vorlage für ähnlich aufgebaute Berichte wiederverwendet werden soll. Dies spart nicht nur Zeit in der Berichtserstellung, sondern sorgt auch für eine einheitliche Berichtsoptik.

Man stelle sich hierzu einen perfekt formatierten Flexreport, der eine Abweichungsanalyse von Produkten zum Inhalt hat, vor. In den Zeilen finden sich die Produkte, in den Spalten diverse Abweichungsindikatoren. Ein weiterer Abweichungsbericht, dessen Spaltenaufbau identisch ist, soll nun im Hinblick auf die Kunden angefertigt werden. Zunächst müsste eine Kopie der Master-Pivottabelle erstellt und die Zeilendefinition von Produkt auf Kunde ausgetauscht werden. Dies allein nimmt kaum mehr als eine Minute Zeit in Anspruch. Aber in der Kopie des Flexreports müssten dann noch alle Zellreferenzen auf die neue Kunden-Pivottabelle umgesetzt werden. Je nachdem, wie die Referenzen im Flexreport verteilt oder dessen Zellen unterschiedlich formatiert sind, kann dies zum aufwändigen Puzzlespiel werden.

Darüber hinaus besteht die Gefahr, dass die Umsetzung mancher Referenzen übersehen wird. Spaltenüberschriften sind ein typisches Beispiel. Da die „richtigen“ Bezeichnungen angezeigt werden, fällt der Umstand, dass diese eigentlich die „falsche“ Pivottabelle (nämlich die der Produkte) referenzieren, kaum auf. Oft deutet nur eine ungewöhnlich lange Ladezeit eines Flexreports darauf hin, dass irgendwo Referenzen auf unnötige Pivottabellen, die bei jedem Aufruf des Flexreports geladen und berechnet werden müssen, schlummern. Folglich besteht die Herausforderung beim Wiederverwenden von Flexreports darin, möglichst schnell alle(!) Referenzen von den alten auf die neuen Master-Pivottabellen umzusetzen.

Der Flex-Code

Derzeit lassen sich Referenzen im Flexreports nur durch manuelles Suchen mit der Maus lokalisieren, indem bei gedrückter Alt-Taste der Flexreport zellweise mit der Maus abgefahren wird. Eine Liste aller vorhandenen Referenzen, die per Knopfdruck generiert wird, gibt es nicht. Oder doch? Ja, aber erst dann, wenn zuvor der folgende Registrierungsschlüssel angelegt ist:

[HKEY_LOCAL_MACHINE\SOFTWARE\Bissantz & Company\DeltaMiner 5.0]
“EnableFlxImExport”=dword:00000001

Nach Neustart des DeltaMaster finden sich beim Flexreport-Ändern-Menü die beiden neuen Menüpunkte „Flexreport-Definition importieren“ und „Flexreport-Definition exportieren“.

2011-11-35_crew_Cockpit

Ein Klick auf „Flexreport-Definition exportieren“ exportiert die gesamte Definition des gerade geöffneten Flexreport als XML-Datei. Diese beinhaltet neben Informationen zur Formatierung von Flexreport-Zellen auch die Referenzen auf die jeweiligen Pivottabellen. Die exportierte Datei kann dann in einem beliebigen XML-Editor oder im SQL Server Business Intelligence Development Studio geöffnet werden. Der folgende Screenshot zeigt einen Ausschnitt der XML-Datei, in dem die Definition einer Zelle vom Typ „Referenz“ hinterlegt ist.

2011-11-35_crew_XML-Datei

Neben den Zellkoordinaten im Flexreport selbst (Row 1 / Col 1) werden die Koordinaten der Referenz auf die Pivottabelle mit der ID 458 angezeigt. Hierbei definiert das XML-Tag Index0 eindeutig die in dieser Zelle referenzierte Pivottabelle anhand ihrer DeltaMaster Cockpit-ID. Die gleiche ID wird im DeltaMaster Flexreport angezeigt, wenn der Mauszeiger bei gedrückter Alt-Taste über diese Zelle gezogen wird.

2011-11-35_crew_Daten DeltaMaster

Mit der Funktion „Suchen und Ersetzen“ lassen sich in der XML-Datei auf einen Schlag alle Referenzen von einer Pivottabelle mit ID_x („Suchen“) auf eine neue Pivottabelle mit ID_y („Ersetzen“) umsetzen. Hierzu muss das gesamte XML-Tag, mit dem ein Cockpit per ID referenziert wird, für das Suchen und Ersetzen verwendet werden. Im folgenden Screenshot sollen alle Referenzen ins Cockpit 458 durch Referenzen auf das neue Cockpit 504 ausgetauscht werden.

2011-11-35_crew_Suchen und Ersetzen

Je nachdem, wie viele Pivottabellen im Flexreport referenziert bzw. deren Referenz geändert werden müssen, muss das Suchen und Ersetzen mehrmals nacheinander durchgeführt werden. Wenn alle Referenzen ausgetauscht sind, wird die geänderte XML-Datei zunächst gespeichert und dann durch Klick auf das Flexreport-Menü „Flexreport-Definition importieren“ wieder in DeltaMaster eingelesen. Als Ergebnis findet sich dann ein neues Cockpit, das den Namen der importierten XML-Datei trägt. Mit diesem Vorgehen lassen sich Flexreports in ungewohnt schneller Weise und ohne die Gefahr übersehener Referenzen als Vorlage zur Erzeugung neuer Berichte verwenden.

Ausblick

Der Export, die Bearbeitung und der anschließende Import von Flexreportdefinitionen ist ein äußerst nützlicher Kniff für die Projektpraxis. Neben dem Kopieren von Flexreports innerhalb einer Analysesitzung ist auch die Wiederverwendung von Flexreports zwischen verschiedenen Analysesitzungen möglich. Gerade für den Fall, dass ein Modellimport von Flexreports inklusive aller abhängigen Objekte von einer in die andere DAS-Datei unmöglich ist, bietet die Flexreportschnittstelle einen tollen workaround. In diesem Fall müssten in der Zieldatei lediglich die Pivottabellen des Flexreports erstellt werden, was in aller Regel wenig Zeit in Anspruch nimmt. Das aufwändige Nachbauen des Flexreports entfällt jedoch, wenn nach dessen Export als XML-Datei die Cockpit-IDs auf diejenigen IDs der Zieldatei aktualisiert werden und die derart angepasste Flexreportdefintion in die Zieldatei importiert wird. Schon steht ein identisch formatierter Bericht in einer neuen Analysesitzung mit neuen Inhalten zur Verfügung.