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

Analysen: Dynamischer Absprung


DeltaMaster bietet mit dem SQL-Durchgriff die Möglichkeit, auch aus einer OLAP-Anwendung heraus auf jedes Detail der zugrunde liegenden relationalen Daten zugreifen zu können. Auf solchen Tabellen lassen sich weitere Verknüpfungen definieren, die den Nutzen und die Flexibilität im Gebrauch stark erhöhen.

In der OLAP-Welt (OLAP wie Online Analytical Processing) werden die Daten der Faktentabelle aus verschiedenen Blickwinkeln aggregiert und verdichtet. Dabei werden mit Absicht solche Details vernachlässigt, die ein Modell entweder unnötig aufblähen und somit die Performance negativ beeinflussen und/oder für das Ziel der Unternehmenssteuerung vernachlässigbaren oder gar keinen Einfluss besitzen.

Für die Beurteilung der Umsatzentwicklung genügen aggregierte Werte; die Positionen einer einzelnen Transaktion besitzen für die Einschätzung der Gesamttendenz wenig und beispielsweise die Rechnungsnummer gar keine Relevanz – diese muss in einer zusammenfassenden OLAP-Modellierung somit auch nicht zwingend in Erscheinung treten.

Grafische Tabelle mit Daten aus dem Würfel
Grafische Tabelle mit Daten aus dem Würfel

Nehmen wir etwa unsere Beispielanwendung Chair her, die die Vertriebswelt eines Stühleherstellers widerspiegelt. Der Vertriebler Baumann schaut in DeltaMaster in der OLAP-Anwendung auf seine Kunden aus der Region Nord 2 und betrachtet in obiger Grafik den Umsatz des Monats August 2018 nach Produkten.

Im verwendeten OLAP-Modell werden alle Umsätze eines Kunden für ein bestimmtes Produkt innerhalb eines Monats aggregiert. Der Kunde Bissantz hat im August 2018 bei Herrn Baumann mit dem Modell “EF Besucherst. MP” einen Umsatz von 7.971 Euro generiert.

Der Monat stellt hier die feinste Zeiteinheit dar, die analysiert werden kann. Des Weiteren wurde auf eine Dimension der Belegnummern verzichtet.

Falls sich also der erwähnte Umsatz aus mehreren Einzelbestellungen an verschiedenen Tagen im August zusammensetzen sollte, ist dies nur noch indirekt daran zu erkennen, dass eine im Modell vorhandene Kennzahl “Anzahl_Belegpositionen” einen Wert größer als eins aufweist. Wie sich der Umsatz auf Einzelbestellungen konkret verteilt, ist im OLAP-Würfel nicht mehr ersichtlich.

Möchte man somit Details über die Einzelbelege sehen, bietet sich der SQL-Durchgriff an, der diese Information durch an die relationale Datenquelle gerichtete Abfragen bezieht. In der obigen Grafischen Tabelle sind – an den kleinen Pfeilen erkennbar – Verknüpfungen definiert, die auf einen passenden SQL-Durchgriff verweisen.

Klicken wir auf die 7.971, um weitere Informationen zu erhalten, wird die Sicht auf Kunde Bissantz und das Stuhlmodell “EF Besucherst. MP” eingeschränkt und zum zuvor angelegten Bericht mit dem SQL-Durchgriff gesprungen (bitte klicken Sie auf die Grafik für eine leicht vergrößerte Darstellung!):

Der Umsatz von 7.971 Euro ergibt sich aus zwei Bestellungen!
Der Umsatz von 7.971 Euro ergibt sich aus zwei Bestellungen!

Wir sehen hier, dass sich in diesem Fall die 7.971 Euro aus zwei Bestellungen mit 3.759 bzw. 4.212 Euro zusammensetzen.

Weiterhin ist erkennbar, dass der SQL-Durchgriff auch in der Lage ist, Grafiken darzustellen. Dazu muss bereits in der relationalen Datenbank für jedes Produkt ein Pfad zur passenden Grafik hinterlegt sein. Mit der im Editier-Menu unter Eigenschaften enthaltenen Option “Bild anzeigen, wenn Feld URL eines Bildes enthält” wird die Anzeige des Bildes aktiviert.

Da davon auszugehen ist, dass der Vertriebler Baumann seine Stühle kennt, entfernen wir das Bild wieder und ebenso die Einschränkung auf einen Kunden und ein Produkt:

Alle Buchungen von Vertriebler Baumann im August 2018 im Gebiet Nord 2
Alle Buchungen von Vertriebler Baumann im August 2018 im Gebiet Nord 2

Wie werden die anzuzeigenden Spalten ausgewählt und welche Optionen zur Darstellung gibt es? Hier sehen wir einen Ausschnitt der Felderdefinition im SQL-Durchgriff für die Spalten, die mit dem Kunden zu tun haben:

Aktivierte Felder und ihre Einstellungen
Aktivierte Felder und ihre Einstellungen

Mit Anklicken der Checkbox ganz links wird ein Feld erst einmal aktiviert und zur Verfügung gestellt und die zugehörige Spalte angezeigt.

Mit Abwählen der Checkbox “Sichtbar” kann die Spalte zu einem Feld auch ausgeblendet werden. Die Ziffer in “Reihenfolge der Anzeige” gibt an, wie die Spalten sortiert werden, von klein nach groß. Sind alle angekreuzten Felder sichtbar, erscheint KundeBEZ somit an zweiter Stelle, hier aber unter dem in Spalte “Spaltenname” definierten Namen “Kunde”, und PLZ5 an dritter Stelle, mit dem Namen “Weg zu Kunde”.

Auch die Zeilen können sortiert werden, hier ist die “Reihenfolge der Sortierung” in Kombination mit “Sortierung” relevant. In unserem Falle wird zunächst nach Kundenname aufsteigend sortiert (Bissantz vor Officina AG), dann nach Produkt (EF Besucherst. MP vor EF Drehst. Ergo) und dann nach Beleg-Id (15.838 vor 31.566). Die Sortierung lässt sich auch über den Reiter “Reihenfolge der Sortierung” per Drag-and-drop bewerkstelligen, übrigens ebenso wie die Reihenfolge der Anzeige der Spalten.

Im Feld “Zusätzliche Bedingung” lässt sich ein beliebiger Ausdruck hinterlegen, der in SQL in einem SELECT-Befehl in der WHERE-Bedingung verwendet werden könnte. Möchte man beispielsweise nur Kunden sehen, deren Name ein “i” und deren PLZ5 (Datentyp String) eine 4 enthält, lautete die WHERE-Bedingung

WHERE KundeBEZ like ‘%i%’ and PLZ5 like ‘%4%’

Man trägt hier bei KundeBEZ “like ‘%i%'” und bei PLZ5 “like ‘%4%'” ohne die doppelten Anführungsstriche ein:

like '%i%' und like '%4%' als zusätzliche Bedingungen
like ‘%i%’ und like ‘%4%’ als zusätzliche Bedingungen

Folgende Datensätze bleiben übrig:

Datensätze mit zusätzlichen Bedingungen
Datensätze mit zusätzlichen Bedingungen

Kommen wir nun zum eigentlichen Thema des Blogbeitrags: In den Felddefinitionen gibt es am hinteren Ende noch zwei Spalten: Spaltenbreite und Verknüpfung. Spaltenbreite ist selbsterklärend, die Eingabe erfolgt in Pixeln, z. B. 200.

Bei der Verknüpfung gibt es eine Reihe von Möglichkeiten, Verbindungen zu externen Zielen zu generieren. Als erste genannte Anwendung lassen sich Hyperlinks zu Webseiten angeben:

Vom SQL-Durchgriff ins Web
Vom SQL-Durchgriff ins Web

Diese Links können auch dynamisch definiert sein und sich auf den Inhalt der Zelle selbst, aber auch auf andere Feldinhalte desselben Datensatzes beziehen. Es können jedoch nur die Felder verwendet werden, die auch aktiv sind. Wird die Anzeige dieser referenzierten Felder nicht benötigt, werden die Checkboxen “Sichtbar” dieser Felder einfach deaktiviert.

Als einfaches dynamisches Beispiel sei angenommen, dass sich auf einen Klick hin der Wikipedia-Beitrag zur Stadt des Kunden öffnen soll. Der Name des Feldes lautet “Stadt_DE” und es ist naheliegend, aber nicht zwingend erforderlich, die Verknüpfung auch unter diesem Feld anzulegen. Feldinhalte werden durch den Namen des Feldes referenziert, eingeschlossen in “#”-Zeichen.

Hier verwenden wir somit https://de.wikipedia.org/wiki/#Stadt_DE# und wenn wir in der Tabelle des SQL-Durchgriffs mit der Maus über die Felder der Spalte Stadt_DE fahren, erscheint der dynamisch erzeugte Link, der uns zur Wikipedia-Seite führen würde:

Dynamisch erzeugte Links zur Wikipedia
Dynamisch erzeugte Links zur Wikipedia

Die Ausdrücke können durchaus komplexer sein. Ein frei nutzbarer Routenplaner bei OpenStreetMap benötigt Start und Ziel in Form von Breiten- und Längengraden. In der relationalen Datenbank befinden sich Felder, die den Standort des Vertrieblers beschreiben (VLatitude und VLongitude), bzw. den des Kunden (AddressLatitude und AddressLongitude). Die folgende in “Weg zu Kunde” hinterlegte Verknüpfung erstellt dann bei Anklicken eine Route zwischen beiden Orten (mehr dazu zum Schluss des Beitrags):

https://www.openstreetmap.org/directions?engine=graphhopper_car&route=#VLatitude#%2C#Vlongitude#%3B#AddressLatitude#%2C#AddressLongitude#

Es ist möglich, die Verknüpfung als Brücke zu einem webbasierten CRM-System zu nutzen, indem zu übergebende Parameter wie #Beleg-Id# dynamisch verwendet werden – ähnlich zu unserem Webclient, bei dem Sie auch über Angabe von Parametern direkt zu einem bestimmten Bericht in einer bestimmten Anwendung springen können. Ein Klick und der Vertriebler hat den passenden Vertrag und die zur Order zugehörige Rechnung zur Verfügung oder kann sich Notizen zu seinem nächsten Kundenbesuch machen.

Eine weitere Möglichkeit besteht darin, den Mail-Client zu starten und bereits mit Feldinhalten vorzubelegen. Angenommen, der Vertriebsleiter wirft einen Blick auf aktuelle Umsätze und möchte dem zuständigen Vertriebler einen Kommentar zukommen lassen, so können Zahlen in die E-Mail übertragen werden.

Die Verknüpfung

mailto:#EMail#?subject=Umsatz #umsatz# mit #ProduktBEZ# im #MonatBEZ# bei #KundeBEZ#&body=’Hallo #VertriebVorname#,%0D%0A%0D%0ARespekt für die #umsatz# Euro Umsatz!’

öffnet beim Anklicken den E-Mail-Client mit dem eingesetzten Addressaten, dynamisch erzeugtem Betreff und dem passenden Text (Bemerkung: %0D%0A ist ein Steuerzeichen für den Zeilenvorschub):

Dynamisch generierter E-Mail-Text mit den passenden Daten
Dynamisch generierter E-Mail-Text mit den passenden Daten

Welche weiteren Beispiele für Verknüpfungen gibt es noch?

  • Öffnen eines Verzeichnisses mit dem Windows Explorer: c:\temp springt zu c:\temp, falls vorhanden, ansonsten erscheint eine Fehlermeldung!
  • Anlegen und Öffnen eines Verzeichnisses mit dem Windows Explorer: c:\temp\#MonatBEZ#|create legt mit ausreichenden Rechten bspw. c:\temp\Aug 2018 an und öffnet das Verzeichnis
  • Öffnen eines Word-Dokuments: c:\temp\#MonatBEZ#\#MonatBEZ#.docx öffnet bspw. die – bereits bestehende – Datei c:\temp\Aug 2018\Aug 2018.docx

Die hinter den Verknüpfungen stehenden Aktionen können interaktiv aus DeltaMaster oder alternativ aus dem Webclient durch Anklicken ausgeführt werden.

Ein SQL-Durchgriff kann aber auch in Gänze exportiert werden; bei einem HTML-Mail-Export über den SMTP-Server bleiben die eingebetteten Verknüpfungen erhalten.

Es kann somit sein, dass Sie eine E-Mail mit einem SQL-Durchgriff-Bericht bekommen, in dem die Verknüpfungen von Zeile zu Zeile variieren. Damit Sie einen Eindruck bekommen, wie sich das anfühlt, ist hier ein Bericht gegeben, in denen Hyperlinks hinterlegt sind. Die markierten Felder führen zu unterschiedlichen Zielen in Abhängigkeit der Zeile:


Klicken Sie auf die markierten Felder!

https://www.openstreetmap.org/directions?engine=graphhopper_car&route=49.46916%2C11.0850%3B53.55046%2C9.98828 https://www.wetteronline.de/wetter/Hamburg www.bissantz.de https://www.openstreetmap.org/directions?engine=graphhopper_car&route=49.46916%2C11.0850%3B53.55046%2C9.98828 https://www.wetteronline.de/wetter/Hamburg www.bissantz.de https://www.openstreetmap.org/directions?engine=graphhopper_car&route=49.46916%2C11.0850%3B54.0845%2C12.1398 https://www.wetteronline.de/wetter/Rostock www.bissantz.de https://www.openstreetmap.org/directions?engine=graphhopper_car&route=49.46916%2C11.0850%3B52.4043%2C13.0531 https://www.wetteronline.de/wetter/Potsdam www.bissantz.de