URL-Berichte können in DeltaMaster auf vielfältige Weise vorteilhaft eingesetzt werden. Im kommenden Release integrieren wir eine äußerst interessante Variante, die die Möglichkeiten noch einmal deutlich erweitert.
URL-Ansicht mit Dynamik und Verbindung zu den Daten
Im kommenden Release 6.7.1 wird ein weiteres Top-Feature vorgestellt: Es wird möglich sein, eine als URL-Ansicht eingebundene HTML-Seite – mit einem bestimmten grundsätzlichen Aufbau – mit Daten aus DeltaMaster zu versorgen und sogar Filter anwenden zu können:
URL-Ansicht mit Korrespondenzanalyse
Im abgebildeten Beispiel haben wir eine Korrespondenzanalyse vorliegen: Diese Analyse, die nicht zum Kanon der Analysemodule in DeltaMaster gehört, wurde außerhalb von DeltaMaster als HTML generiert, mit Unterstützung einer KI-Umgebung wie ChatGPT oder Claude. Danach wurde sie mittels einer URL-Ansicht eingebunden.
Trotzdem reagiert sie dynamisch auf Filterwechsel, hat eigene Steuerelemente und verhält sich beinahe wie ein originärer DeltaMaster-Bericht!
Wie wir eine solche HTML-Seite mit neuen Analysemöglichkeiten erstellen und welche verwandten Funktionalitäten es bisher gab, erläutern wir im vorliegenden Blogbeitrag.
URL-Ansicht in bisher üblichen Anwendungen
In einer URL-Ansicht kann eine Webadresse in Form einer URL (Uniform Resource Locator – eigentlich müsste es ja der URL heißen!) hinterlegt werden. Die URL kann auf eine statische Adresse verweisen, bspw. auf eine Produkt- oder News-Seite:
URL-Ansicht mit statischer Adresse: die kommenden Veranstaltungen
Die Inhalte der referenzierten Webseite können und sollen sich durchaus verändern, aber die Adresse bleibt fix. Hat man mehrere solcher URL-Berichte auf bestimmte Webseiten eingerichtet, könnte der Kioskmodus interessant sein. Die in den Berichtseigenschaften freigeschalteten Berichte einer Sitzung – diese selbst wird dann per Windows-Verknüpfung mit bestimmten Parametern aufgerufen – laufen dann als Diashow in einer Dauerschleife.
Die Adresse kann auch ein Bild enthalten, welches Sie beispielsweise in einem Fenster der Multiples in DeltaMaster anzeigen lassen können.
Webseitenadressen mit Parametern
Viele Webseitenadressen benutzen Parameter. Verwenden Sie etwa DeltaMaster Web, lassen sich in der URL über die Angabe von Sitzungs-ID und Berichts-ID ausgewählte Berichte ansteuern und beispielsweise innerhalb Multiples anzeigen:
Multiples mit URL-Berichten, die aus mehreren Sitzungen gespeist werden
Dieses Beispiel stammt aus meinem älteren Beitrag Visualisierung: Lieferung frei Haus, in welchem ich Vorgehensweise und die notwendigen URL-Ansichts-Einstellungen wie die zu verwendende Adressform „http://hostname/Session.aspx?application=a_id&report=r_id&Renderingmode=reportonly“ genauer erläutere.
Somit können Sie auch Berichte, die auf Daten aufbauen, die zu unterschiedlichen Repository-Sitzungen oder sogar zu unterschiedlichen Datenbanken gehören dürfen, auf einer gemeinsamen Seite anzeigen.
Die anzugebenen Webadressen sind aber weiterhin fix.
Externer Verknüpfung mit dynamisch erzeugter Adresse
Allmählich nähern wir uns dem Thema der Neuerung des kommenden Releases: Nun soll die URL auch dynamisch erzeugte Bestandteile enthalten. Teile des Kontexts wie eingestellte Filter in der Filterleiste oder die aktuelle Zelle einer Verknüpfung in einer Grafischen Tabelle oder einem SQL-Durchgriff sollen Einfluss auf die Webadresse selbst oder meistens auf die Parameter einer Webadresse haben.
Ich greife hier auf ein Beispiel zurück, das ich in ähnlicher Form in Visualisierung: Lieferung frei Haus bereits beschrieben habe.
Wenn man bei Openstreetmap.org eine Auto-Route von einem Ort A zu einem Ort B plant, entsteht in der Adressleiste ein Ausdruck der Form
https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=49.469207%2C11.084744%3B51.0445%2C13.7304#map=8/50.273/12.409
„%2C“ steht für ein Komma und „%3B“ für ein Semikolon. D. h., etwas eingängiger lautet der Befehl:
https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=49.469207,11.084744;51.0445,13.7304#map=8/50.273/12.409
Die auftretenden Parameter, die ich dynamisch einstellen könnte, sind nun:
- Fahrzeug: engine=fossgis_osrm_car
- Route von bis: route=49.469207,11.084744;51.0445,13.7304
- Zoomstufe/Zentrum der Karte: #map=8/50.273/12.409
Schaue ich nun in unsere Demo-Anwendung Chair auf die Kunden, so besitzen diese die Elementeigenschaften AddressLatitude und AddressLongitude.
Hinweis: In DeltaMaster gibt es für OLAP die Möglichkeit, Elementeigenschaften mit numerischen Inhalten in echte Kennzahlen zu verwandeln. An dieser Stelle sind die sogenannten Elementeigenschaftswerte aber nicht die optimale Wahl, da die entstehenden Zahlen bei den Standardeinstellungen ein Dezimalkomma erhalten. Openstreetmap benötigt aber den Dezimalpunkt.
DeltaMaster kann in Kennzahlen auch Strings darstellen. Ich lege deshalb einen Analysewert Latitude an mit [Kunde].[Kunde].currentmember.Properties(„AddressLatitude“), ebenso Longitude mit [Kunde].[Kunde].currentmember.Properties(„AddressLongitude“). In meiner Sitzung haben diese Kennzahlen die IDs 12 und 13.
Konkrete Anwendung
Zu jedem der Kunden habe ich nun in diesen beiden Kennzahlen den Standort zur Verfügung. Ich lege nun eine externe Verknüpfung an, mit Ziel
https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=49.469207%2C11.084744%3B%2C<measure12>%2C<measure13>
Die Start-Koordinaten 49.469207, 11.084744 gehören zu Bissantz & Company in Nürnberg, während wir die Ziel-Koordinaten aus den beiden Kennzahlen bilden.
Klicke ich nun in meiner Grafischen Tabelle den Verknüpfungspfeil an,
Externe Verknüpfung mit URL
so werden in der URL-Adresse die Platzhalter mit den zugehörigen Werten gefüllt und wir bekommen die passende Route zum Kunden vorgeschlagen:
Routenvorschlag von Openstreetmap (© OpenStreetMap-Beitragende)
Im konkreten Fall haken wir bei Schmidt & Sohn nach. In der Adressleiste sehen wir die zugehörigen dynamisch eingesetzten Koordinaten 50.8351 und 12.9102. Geben wir in der URL den Teil mit der Zoomstufe und dem Kartenmittelpunkt nicht an, wird dieser Part automatisch ergänzt.
Im Gegensatz zum URL-Bericht verlassen wir mit der externen Verknüpfung DeltaMaster und befinden uns nun im geöffneten Browser.
URL-Berichte mit DeltaMaster-Daten: das Grundprinzip
Von Kundenseite werden manchmal bestimmte, eher individuelle Visualisierungen oder Darstellungen gewünscht. Mit dem neuen brandaktuellen Feature des kommenden Releases lassen sich professionelle Prototypen entwickeln und an DeltaMaster anbinden. Diese Berichte in Form einer HTML-Seite werden dynamisch mit Daten aus DeltaMaster versorgt und können über die Filterleiste gefiltert werden.
Sie verhalten sich dann sehr ähnlich zu nativen Berichten, die innerhalb der Anwendung angelegt wurden.
Die Vorgehensweise lässt sich mit den folgenden Schritten zusammenfassen:
- Die erforderlichen Daten werden zunächst in DeltaMaster aufbereitet, etwa in einer Grafischen Tabelle oder in einem SQL-Durchgriff, und anschließend als JSON exportiert.
- Dieses JSON wird in einer Textdatei in eine KI-Umgebung wie ChatGPT oder Claude hochgeladen. Weiterhin übergeben wir ein fertiges Regelwerk im Markdown-Format und optional einen Screenshot mit dem gewünschten Aussehen. Im Regelwerk ist festgelegt, wie die HTML-Seite aufgebaut sein muss, damit DeltaMaster später Daten an sie übergeben und die Darstellung aktualisieren kann.
- Auf dieser Grundlage wird die HTML-Seite gemeinsam mit dem KI-Chatbot schrittweise entwickelt und verfeinert. Dabei können neben der eigentlichen Visualisierung auch Animationen und interaktive Funktionen umgesetzt werden.
- Die fertige HTML-Datei wird anschließend als URL-Ansicht in DeltaMaster eingebunden.
- Danach werden die zunächst fest eingebetteten JSON-Beispieldaten durch Referenzen auf diejenigen DeltaMaster-Berichte ersetzt, die künftig die aktuellen Daten liefern.
- Von diesem Zeitpunkt an aktualisiert sich der HTML-Bericht automatisch und berücksichtigt dabei auch die jeweils aktiven Berichtsfilter in DeltaMaster.
URL-Bericht: Erster Schritt JSON-Export
Gehen wir einmal von der DB-Rechnung aus, wie sie in unserem Demo-Modell Chair gerne verwendet wird:
DB-Rechnung
Zunächst benötigen wir die JSON-Darstellung dieser Daten. In Optionen/Export/Zwischenablage stellen wir das Feld Tabelle kopieren als auf JSON ein.
JSON in Text-Datei exportieren
Anschließend wählen wir über das Exportmenü Zwischenablage und fügen den Inhalt in eine Textdatei ein, die wir hier DB_daten.json nennen. Der Ausschnitt zeigt die Daten, die für den Umsatz vorliegen, und analoge Daten existieren auch für Skonti und die anderen Kennzahlen.
URL-Bericht: Zweiter Schritt Statische HTML-Seite
Nun begeben wir uns in eine KI-Umgebung – bei mir ist es ChatGPT in der Unternehmenslizenz. In einem Projekt hinterlege ich die von Bissantz vorbereitete Markdown-Datei mit den Anweisungen, wie die HTML-Seite prinzipiell aufgebaut sein muss und auszusehen hat. Anschließend lade ich auch die erstellte JSON-Datei hoch und versuche es mal mit einer unverbindlichen Anfrage:
ChatGPT, erstelle mir die HTML-Seite
ChatGPT (Mittel, GPT-5.6 Sol) hält sich an die Vorgaben, legt los und erzeugt mir eine HTML-Datei DB_Bericht_dynamisch.html:
ChatGPT hat eine HTML-Seite erstellt
Trotz des von ChatGPT vergebenen Namens DB_Bericht_dynamisch.html ist diese Webseite statisch, da sie momentan noch die fixen Daten des eingestellten Monats enthält. Diese Webseite kann mit jedem Browser angeschaut werden. In DeltaMaster verwende ich die URL-Ansicht und gebe zunächst die lokale Adresse an, unter der ich Zugriff habe:
HTML-Seite erster Durchlauf
Ich habe hier keinerlei Funktions- oder Design-Vorgaben an ChatGPT übergeben.
URL-Bericht: Statische HTML-Seite reloaded
Interessehalber starte ich einen zweiten Durchlauf in einem neuen Projekt mit identischem Vorgehen und sehe doch eine recht abweichende Darstellung. In diesem Fall sind Buttons vorhanden, um auch die Kosten-Zeitreihen einzeln aktivieren oder deaktivieren zu können:
HTML-Seite zweiter Durchlauf
Es sind schon mehr Informationen notwendig, um das gewünschte Aussehen des Berichtes festzulegen. Es kann auch hilfreich sein, zusätzlich in einem Bild die gewünschten Designelemente und Komponenten zu skizzieren und ihre erwarteten Funktionalitäten in der Anfrage festzulegen.
Im vorliegenden Fall habe ich bereits mit der Grafischen Tabelle ein kompaktes Format, bei der ich mit Navigieren und Zoomen mindestens die Informationen erhalten kann, die ich auch in diesen mehr als bildschirmfüllenden Formaten sehe.
URL-Bericht mit Korrespondenzanalyse
Ich möchte das Prozedere deshalb lieber an einem Beispiel demonstrieren, das sich in DeltaMaster direkt nicht so leicht umsetzen lässt. Die Korrespondenzanalyse hatte ich bereits in mehreren Blog-Artikeln angesprochen, bspw. in Bevölkerungsbestand in Nürnberg und in Bilder in Berichten: Vorbildlich gelöst!.
Im letzteren Beitrag lieferte ich bereits im Jahre 2020 eine in DeltaMaster integrierte Lösung:
Korrespondenzanalyse in DeltaMaster Anno 2020
Allerdings war diese Lösung an die Installation von SQL Server Machine Learning Services gebunden, und ich musste im SQL-Durchgriff in der Variante „gespeicherte Prozedur“ R-Skripten entwickeln, die wiederum auf R-Pakete wie ca (Correspondence Analysis) zurückgriffen.
Also war zunächst ein einmaliger größerer Aufwand der Erstellung mit der technischen Einschränkung auf Microsoft SQL Server notwendig, anschließend war das Modul einzusetzen. Geht das nun einfacher und allgemeiner? Wie werden sehen.
Als Datenmaterial braucht man eine zweidimensionale Häufigkeitstabelle. Ich nehme hier einmal die Absatzzahlen nach Gebieten und Produktgruppen her:
Absatzzahlen nach Gebieten und Produktgruppen
Die Korrespondenzanalyse zeichnet Zeilen- und Spaltenprofile in ein gemeinsames Diagramm. Zeilenprofile entsprechen in DeltaMaster der Darstellung Anteil an Zeilen und Spaltenprofile der Darstellung Anteil an Spalten.
URL-Bericht Korrespondenzanalyse: JSON-Export und ChatGPT-Auftrag
Wie oben bereits beschrieben, exportiere ich die Tabelle als JSON in die Zwischenablage und speichere sie als Text-Datei ab, welche ich ChatGPT wieder zur Verfügung stelle. Ebenso formuliere ich wieder meinen Wunsch nach einer HTML-Seite mit einer Korrespondenzanalyse.
Eigentlich sollte ich den Algorithmus besser bereits in einer maschinenlesbaren Form vorgeben, damit ich später einfacher eruieren kann, ob die Umsetzung passt. Die Quelle, die ich gerne genutzt hätte, ist das Buch Greenacre, M. (2017), Correspondence Analysis in Practice (3. Aufl.) vom Erfinder selbst, aber zurzeit habe ich keinen Zugriff auf das Werk.
Deshalb baue ich auf das Weltwissen von ChatGPT und gebe wieder die prinzipiellen Anweisungen zur Erstellung der HTML-Seite mit:
Anfrage an ChatGPT Erstellung Korrespondenzanalyse
Die von ChatGPT erzeugte HTML-Datei binde ich wieder in DeltaMaster in eine URL-Ansicht ein:
Ergebnis URL-Bericht zur Korrespondenzanalyse
In diesem Fall lasse ich mich wieder überraschen, welches Design ChatGPT liefern wird. Die mich hauptsächlich interessierende graphische Darstellung sieht plausibel aus. Ob sie richtig ist, kann ich ohne Vergleich von Originalcode und hier verwendeten Javascript-Code nicht beurteilen.
Es sind bereits Knöpfe vorhanden, um die Berechnungsart einzustellen. Die Beschriftung kann unterdrückt werden und die Größe der Marker (Kreise für Regions-Zeilen, Diamanten für Produktgruppen-Spalten) kann proportional zum Absatz gewählt werden oder nicht. Tooltipps liefern nähere Angaben zu den Objekten.
Die Zahl 98,8 % oben rechts zeigt, dass der Großteil des Informationsgehalts in der Grafik sichtbar ist. 100 % wären optimal. Dann sehe ich noch die Beiträge der Achsen zu diesen 98,8 %.
Noch bewirkt die Änderung des Filters auf bspw. andere Monate nichts, da die September-2024-Daten fix in der HTML-Datei eingebettet sind.
Verbesserungspotenzial
Bei den folgenden Punkten möchte ich noch nachbessern:
- Zoom in der Grafik ermöglichen
- Visualisierung mehr im Stile von DeltaMaster
- auch Spaltenprofile und absolute Häufigkeiten anzeigen
- Profile prominenter platzieren
In ca. 8 gröberen Iterationsrunden und 4 Feinschliffrunden und vielleicht mit 3 Stunden Aufwand inklusive Mittagspause bin ich zu dem gleich dargestellten URL-Bericht gelangt. Zu den Schritten gehörte auch der Wunsch nach besser formatiertem und kommentiertem Quellcode.
In die Machine-Learning-Services-Lösung auf dem SQL-Server mit Stored Procedures habe ich deutlich mehr Aufwand investiert und ich müsste dabei eher in Tagen rechnen.
Das DeltaMaster-Aussehen habe ich durch Hochladen zweier Markdown-Dateien in die Projektumgebung erreicht – eine mit Angaben zu den zu verwendenden Farben, die andere zu Fonts und Schriftgrößen.
Scharfschalten durch Referenzangaben
In den HTML-Dateien ist weiterhin der JSON-Export vom September 2024 fix enthalten. Der entscheidende Schritt, um nun eine Wirkung der Filter und eine Anbindung an die Daten in DeltaMaster zu erreichen, ist der Austausch dieses JSON-Objekts gegen eine Referenz auf den verwendeten Bericht:
HTML-Code: Austausch der konkreten Daten gegen einen Verweis auf den Bericht
So entsteht auch die Dynamik. Die eingestellten Filterwerte werden somit nicht als Parameter an eine externe HTML-Seite weitergegeben. DeltaMaster selbst ersetzt bei Filteränderungen diesen Platzhalter mit den passenden Daten und überreicht der Browserkomponente den Inhalt mit den nun geltenden, aktualisierten Daten.
Nur innerhalb von DeltaMaster ist diese Funktionalität verfügbar.
Das erzeugte HTML-File hat ca. 1650 Zeilen. Davon entfallen etwa 450 auf allgemeine Style-Definitionen, 50 auf die Logik der Nachkommastellen, 60 auf die Bissantz-Konventionen, ca. 500 auf die Rechenlogik der Korrespondenzanalyse und der Rest auf den Aufbau der Seite und die Anordnung der Komponenten.
Die Rechenlogik müsste noch einmal auf den Prüfstand und mit dem gewünschten Verfahren abgeglichen werden. Die Einstellungen auf der HTML-Seite werden bei Filterwechsel auf den Defaultwert zurückgestellt; vielleicht hat die KI auch hierfür eine Lösung.
Für diesen Blogbeitrag soll es als PoC reichen.
URL-Bericht in Aktion
Nun steht die Korrespondenzanalyse zur Verfügung. Sie reagiert auf die Filter, erlaubt die Berücksichtigung diverser Optionen, zeigt auch Spaltenprofile und Originalzahlen:
HTML-Code: Austausch der konkreten Daten gegen einen Verweis auf den Bericht
Auf gut Deutsch: Ein brauchbares Analysemodul steht in kurzer Zeit zur Verfügung. Sie erhalten somit die Möglichkeit, gewünschte Spezial-Funktionen über eine standardisierte Schnittstelle direkt nach Ihren exakten Vorstellungen selbst zu entwickeln.
















