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

Verknüpfungen mit SQL-Durchgriff

Ein SQL-Durchgriff kann sowohl Ziel als auch Ausgangspunkt einer Verknüpfung sein. Mit dem letzten Release von DeltaMaster haben wir die Verarbeitung von Zeitanalyseelementen in Verknüpfungen erweitert und komplettiert.

Verknüpfungen zum SQL-Durchgriff

Mit Hilfe von Verknüpfungen können wir in Grafischen Tabellen den Kontext einer Zelle zur Detailanalyse weiterleiten. Als Ziel kann dabei zum Beispiel ein weiterer Bericht gewählt werden. Dabei ist der Typ des Zielberichts beliebig. Somit sind Verknüpfungen etwa auf andere Grafische Tabellen, auf Geo-Analysen, ABC-Analysen, Zeitreihenanalysen u. a. möglich. Ist das Ziel hingegen ein SQL-Durchgriff, gilt es einige Dinge zu beachten.

Im folgenden Beispiel gehen wir von einer einfachen DB-Rechnung in unserer Demo-Anwendung Chair aus:

Per Verknüpfung zum SQL-Durchgriff

Per Verknüpfung zum SQL-Durchgriff

Den SQL-Durchgriff setzen wir hier ein, um zu bestimmten Werten weitere Informationen zu erhalten. Im vorliegenden Modell werden Umsätze nur aggregiert auf Monatsebene berechnet, während die zugrunde liegende Faktentabelle auch die Einzelpositionen innerhalb des Monats kennt.

Wird in der obigen Tabelle beim Umsatzwert für September 2021 beispielsweise die Verknüpfung zum SQL-Durchgriff Produkte angeklickt, so landet man in unserem Beispiel bei der folgenden detaillierten Tabelle.

Das Ziel, ein SQL-Durchgriff

Das Ziel, ein SQL-Durchgriff

Dieser SQL-Durchgriffs-Bericht offenbart Details, die wir in der Modellierung “weggebügelt” haben, da diese uns bei der Beurteilung der Gesamtlage weniger interessieren. Trotzdem möchten wir uns die Möglichkeit offenhalten, bei Bedarf auch diese Einzelpositionen zu sehen.

Zum Beispiel beschreiben die Zeilen 2 und 3 zwei getrennte Umsätze, die Vertriebler Hohlmaier jeweils mit der Bundesagentur für Arbeit mit Stühlen aus der Produkthauptgruppe Sondermodelle im Monat September 2021 erzeugt hat. Das Feld BelegNr haben wir nicht explizit in das Modell aufgenommen; somit sehen wir nur im SQL-Durchgriff die beitragenden Umsätze zum Gesamtwert eines Monats.

Weiterhin ist ersichtlich, dass wir in der Tabelle nur Bezeichner verwendet haben (Endung “BEZ”, wir könnten diese Namen bei Bedarf für die Anzeige verschönern) und nicht zwingend die Schlüsselfelder der Dimensionsebenen benutzen mussten.

Uns ist hier aber vor allem wichtig zu betonen, dass der Zielbericht (vom Typ SQL-Durchgriff) nun auf das Filterelement “Sep 2021” eingestellt ist.

Spaltenelemente filtern

Mit einem Klick auf das orangefarbene Feld mit dem sprechenden Text kehren wir zur Grafischen Tabelle zurück. Folgen wir nun einmal der anderen Verknüpfung, indem wir den Pfeil beim Umsatz 14,6 Mio. des Vorjahres (VJ) anklicken:

Ein zweiter SQL-Durchgriff als Verknüpfungsziel

Ein zweiter SQL-Durchgriff als Verknüpfungsziel

Da wir auf dem Vorjahreswert standen, sehen wir nun in der Filterleiste “Sep 2020” eingestellt.

Hier haben wir die BelegNr weggelassen und wir hätten den Inhalt dieser Tabelle prinzipiell auch in einer Grafischen Tabelle darstellen können.

Schauen wir einmal im Modellieren-Modus auf die vorhandenen Elemente, sehen wir, dass die vier Elemente auf der Spaltenachse unserer Grafischen Tabelle von DeltaMaster angelegt wurden (erkennbar durch die grüne Schrift):

Die Elemente der Spaltenachse der Grafischen Tabelle sind hier markiert

Die Elemente der Spaltenachse der Grafischen Tabelle sind hier markiert

Diese von DeltaMaster automatisch angelegten Elemente – die sogenannten Zeitanalyseelemente – sind nicht in der Faktentabelle vorhanden. Bei einer Verknüpfung übernimmt DeltaMaster bereits für uns die Aufgabe, diese Zeitanalyseelemente auf tatsächlich vorhandene Elemente der Periodendimension umzulenken.

Das sind in diesem Fall die konkreten Monate, die im oberen Teil des Baumes sichtbar sind. Es erscheint trivial, dass bei in der Filterleiste eingestelltem Monat September 2021 bei “Aktuelle Periode” eben auf diesen konkreten Monat “Sep 2021” verwiesen wird. Ebenso denken wir nicht weiter darüber nach, dass VJ (= Vorjahresperiode) auf “Sep 2020” verweisen wird.

Aber was soll passieren, wenn eine Verknüpfung auf einem Wert zur Vorjahresabweichung eingerichtet wird? Diese ist (sofern nicht explizit von uns bereits bei der Modellierung vorberechnet) in der Faktentabelle nicht vertreten.

Mit dem Release 6.4.7.1 wurden hier die Möglichkeiten so erweitert, dass auf jedem Zeitanalyseelement eine Verknüpfung erstellt werden kann, die dann im SQL-Durchgriff zu einem sinnvollen Ergebnis führt.

Einstellungen für eine Verknüpfung zum SQL-Durchgriff

Aber sehen wir uns doch erst einmal die relevanten Einstellungsmöglichkeiten einer Verknüpfung auf einer Grafischen Tabelle zu einem SQL-Durchgriff an:

Mögliche Einstellungen bei einer Verknüpfung

Mögliche Einstellungen bei einer Verknüpfung

Im oberen Teil (der hier für die Anzeige umgebrochenen Darstellung) legen wir die Zielberichte fest und verwenden die Darstellung der Verknüpfungen direkt bei den Zellen mit verkürzten Texten Kunden und Produkte.

Unter Bedingung lässt sich festlegen, ob eine Verknüpfung in einer Zelle überhaupt erscheinen soll. Im Forschungsblog-Beitrag Variablen in relationalen Anwendungen hatte ich die Syntax ausführlich erläutert: Da Umsatz die interne Measure-ID 5 hat, sieht man mit der Bedingung “<measure> = 5” die Verknüpfung zu den Kunden nur in der Umsatzzeile. Die andere Bedingung besagt, dass der Verknüpfungspfeil nur für das Aktuell-Element der Periodendimension (Dimensions-ID = 0) sichtbar sein soll, also hier in der ersten Spalte.

Im Schnitt von 1. Zeile und 1. Spalte sind beide Verknüpfungen aktiv und wir sehen dann das Hamburger-Menu-Item anstelle eines Pfeiles.

Damit nun ein Zeitanalyseelement bei der Verknüpfung überhaupt berücksichtigt wird, muss “Spaltenelemente filtern” aktiviert sein. Die Option “Analysewert übertragen” hat bei einem SQL-Durchgriff als Ziel keinen Einfluss. Diese Übertragung findet nur bei Zielberichten statt, die genau einen Analysewert auf der Achse haben, wie zum Beispiel bei einer Rangfolge. Bei einer Rangfolge als Zielbericht würde der bisherige Analysewert durch den hier gegebenen Analysewert der Zeile ersetzt werden.

Bemerkung: Wenn wir einen Einfluss der Analysewerte auf das Ziel der Verknüpfung wünschen, könnten wir aber pro Ziel eine Bedingung hinterlegen, die nur jeweils bestimmte Analysewerte durchlässt, so, wie wir es auch im Fall von Umsatz gemacht haben.

Wozu brauchen wir nun die Option “Zeilenelemente filtern”, wenn wir doch im vorliegenden Fall nur Analysewerte auf der Zeilenachse haben? Es sind offensichtlich keine Dimensionsebenen auf der Zeilenachse vorhanden, deren Elemente wir übertragen könnten.

Verknüpfungen während des Navigierens

Auch wenn keine Dimensionselemente direkt auf der Zeilenachse vorliegen, können wir im Präsentationsmodus per Navigieren in eine solche Ebene drillen:

Verknüpfung auf Dimensionselementen während einer Navigation

Verknüpfung auf Dimensionselementen während einer Navigation

Nur wenn wir “Zeilenelemente filtern” aktivieren, werden wir nach Klick auf den Navigationspfeil nur die Vorgänge zu Vertriebler Hohlmaier sehen:

Nun nur noch Vorgänge zu Hohlmaier

Nun nur noch Vorgänge zu Hohlmaier

Nachdem wir nun wissen, wie wir Zeilen- und Spaltenelemente prinzipiell filtern können, widmen wir uns speziell den Zeitanalyseelementen auf der Spaltenachse.

Verknüpfungen bei Zeitanalyseelementen in der Spaltenachse

Zeitanalyseelemente dienen dazu, sich ausgehend von einer eingestellten Periode im Filter, hier September 2021, dynamisch auf andere Elemente und Mengen zu beziehen. Dazu kann noch eine Auswertungsvorschrift kommen, um auf den Elementen einer Menge eine Berechnung durchzuführen. Zuletzt hatte ich mich im Beitrag Benutzerdefinierte Ausdrücke in Zeitachsen und Zeitanalyseelementen ausführlicher mit der Thematik beschäftigt.

Die Logik der Berücksichtigung von komplexeren Zeitanalyseelementen bei einer Verknüpfung auf einen SQL-Durchgriff ist nun ganz einfach:

Alle Periodenelemente, die wir zur Auswertung eines Zeitanalyseelementes benötigen, werden für den Zielbericht in eine Multiauswahl umgewandelt.

Im SQL-Durchgriff ist die Vorjahresabweichung selbst nicht als Element auswählbar. Der Versuch, im Editiermodus die Vorjahresabweichung als Element bei aktivem SQL-Durchgriff einzustellen, erzeugt einen Fehler.

Gehen wir nun den Weg über die Verknüpfung in der Grafischen Tabelle und klicken auf die Verknüpfung zu den +2,0 Mio. der Vorjahresabweichung:

Verknüpfung zum SQL-Durchgriff bei der Vorjahresabweichung

Verknüpfung zum SQL-Durchgriff bei der Vorjahresabweichung

Im Zielbericht sehen wir nun die Multiauswahl in der Filterleiste eingestellt und der SQL-Durchgriff zeigt sowohl Werte aus Sep 2021 als auch aus dem Vorjahresmonat Sep 2020. Standardmäßig sehen wir die beteiligten Perioden chronologisch aufgezählt:

SQL-Durchgriff mit übertragener Vorjahresabweichung in der Standardreihenfolge

SQL-Durchgriff mit übertragener Vorjahresabweichung in der Standardreihenfolge

Hier haben wir uns auf die ersten 15 Zeilen beschränkt und nur der Filter verrät, dass zwei Perioden aktiv sind.

Um auch einmal Einträge mit Sep 2021 zu sehen, wählen wir im SQL-Durchgriff eine absteigende Sortierung nach Umsatz:

SQL-Durchgriff mit übertragener Vorjahresabweichung

SQL-Durchgriff mit übertragener Vorjahresabweichung

Die Verknüpfung auf der relativen Abweichung verhält sich identisch, da zur Berechnung dieselben Monate benötigt werden.

Weitere Beispiele

Ergänzen wir nun die Ausgangstabelle um zwei weitere Zeitanalyseelemente. Zum einen nehmen wir einen benutzerdefinierten Ausdruck range(4).avg, der uns den Durchschnitt der letzten vier Monate berechnet. Zum anderen soll es der kumulierte Wert innerhalb des aktuellen Quartals sein:

Erweiterte Grafische Tabelle mit Verknüpfungen

Erweiterte Grafische Tabelle mit Verknüpfungen

Klicken wir nun den Verknüpfungspfeil für range(4).avg an, erkennt DeltaMaster, dass hier auf die letzten vier Monate verwiesen wird:

SQL-Durchgriff mit Bereich

SQL-Durchgriff mit Bereich

Hier zeigen wir immer die 15 Einträge mit den höchsten Umsatzwerten.

Die vier Monate werden hier im Filter nicht mit einer Aufzählung der Elemente, sondern mit einer knapperen Beschreibung “Jun 2021 bis Sep 2021” dargestellt.

Ähnlich verhält es sich mit der anderen Verknüpfung:

SQL-Durchgriff kumuliert im Quartal

SQL-Durchgriff, kumuliert im Quartal

Nun sehen wir die vorliegenden Monate des aktuellen Quartals von Juli bis September 2021.

DeltaMaster fasst die benötigten Elemente möglichst platzsparend zusammen. Eine Verknüpfung auf der Vorjahresabweichung der kumulierten Werte bis September erzeugt diese Auswahl in der Filterleiste:

Eingestellter Filter bei Vorjahresabweichungen von kumulierten Werten

Eingestellter Filter bei Vorjahresabweichungen von kumulierten Werten

Die Logik der Auflösung der Verknüpfungen sollte nun klar sein. Sie funktioniert mit reinen Zeitanalyseelementen bei relationalen Modellen. Bei berechneten Elementen – egal, ob in der Periodendimension oder in einer anderen Dimension, – können Sie die Verknüpfung auf einen SQL-Durchgriff bisher aber nicht nutzen. Dies gilt zurzeit auch für berechnete Elemente, die sich nur auf Zeitanalyseelemente beziehen.

Verknüpfungen vom SQL-Durchgriff

Bisher waren die Verknüpfungen von einer Grafischen Tabelle auf einen SQL-Durchgriff definiert. Genauso existieren aber auch Verknüpfungen, die von einem SQL-Durchgriff auf andere Berichte führen. Ein Zielbericht eines SQL-Durchgriffs kann aber auch wiederum ein weiterer SQL-Durchgriff sein.

Ist ein SQL-Durchgriff der Ausgangsbericht, geht es nicht mehr um Zeitanalyseelemente, da diese als Filterauswahl nicht zugelassen sind.

Erzeugen wir nun einmal aus dem oben erwähnten SQL-Durchgriff Kunden eine Kopie, der wir noch die Belegnummer hinzufügen. Diesen Bericht nennen wir dann “SQL Durchgriff Kunden BelegNr” und er soll der Zielbericht vom SQL-Durchgriff Kunden werden. Wenn wir von dem bisher gezeigten SQL-Durchgriff Kunden ausgehen, erhalten wir jedoch eine Fehlermeldung:

Fehlermeldung, da dem SQL-Durchgriff etwas fehlt

Fehlermeldung, da dem SQL-Durchgriff etwas fehlt

DeltaMaster braucht Schlüsselfelder, und zwar diejenigen aus den Dimensionstabellen. Über Modellieren/Struktur sehen wir die Beziehungen zwischen Faktentabelle und den Dimensionstabellen (hier ein Ausschnitt):

Der SQL-Durchgriff braucht die Schlüsselfelder aus den Dimensionstabellen (mit Blau hinterlegt)

Der SQL-Durchgriff braucht die Schlüsselfelder aus den Dimensionstabellen (mit Blau hinterlegt)

Schauen wir auf den SQL-Durchgriff Kunden, so sind dort bisher indirekt 3 Dimensionsebenen vertreten: Periode, Kunde und Vertrieb. Möchten wir erreichen, dass die zugehörigen Elemente mit der Verknüpfung weitergereicht werden, müssen wir die mit Blau hinterlegten Schlüsselfelder verwenden. Die Bezeichner (Felder mit BEZ) reichen nicht aus.

Hinzufügen der Schlüsselfelder

Fügen wir der Tabelle zunächst aus didaktischen Gründen nur die zwei Spalten MonatID und KundeID hinzu:

Der SQL-Durchgriff enthält nun zwei Schlüsselfelder

Der SQL-Durchgriff enthält nun zwei Schlüsselfelder

Die letzten beiden aktiven ID-Spalten können wir auch mit einer Checkbox zu den Feldern auf nicht sichtbar (trotzdem bleiben sie dann aktiv!) schalten, da sie hier normalerweise keine direkt verwertbare Zusatzinformation liefern.

Den obigen SQL-Durchgriff sehen wir, wenn wir in unserer Grafischen Tabelle auf die Vorjahresabweichung des Umsatzes klicken. Wählen wir nun einen beliebigen Verknüpfungspfeil der zweiten Zeile (alle Verknüpfungen erzeugen hier das identische Ergebnis), erhalten wir den folgenden detaillierten SQL-Durchgriff mit BelegNr:

Der detaillierte SQL-Durchgriff mit BelegNr als Zielbericht

Der detaillierte SQL-Durchgriff mit BelegNr als Zielbericht

Durch die Hinzunahme der beiden Schlüsselfelder MonatID und KundeID enthält nun der verknüpfte Bericht im Filter die Elemente “Sep 2020” und “Bundesagentur für Arbeit”. Der Ziel-SQL-Durchgriff muss diese ID-Felder nicht zwingend enthalten.

Nur vorhandene Schlüsselfelder werden in der Verknüpfung berücksichtigt

Außerdem erkennt man, dass diese Tabelle Daten zu Hohlmaier und Baumann enthält. Nur wenn wir im ersten SQL-Durchgriff das Feld VertriebID explizit in der dazugehörigen Dimensionstabelle aktivieren, würden wir dann im Filter Baumann sehen und als Konsequenz nur noch die zugehörigen drei Buchungen:

Der detaillierte SQL-Durchgriff mit VertriebID

Der detaillierte SQL-Durchgriff mit VertriebID

Um bei größeren Tabellen zu erkennen, welche Filter zur Zeit im automatischen Modus übertragen werden, klicken wir in den Verknüpfungseinstellungen des ersten SQL-Durchgriffs auf die drei Punkte im Feld Filterzuweisung. Für unseren ersten Versuch ohne VertriebID sehen wir dann:

MonatID und KundeID werden übertragen, VertriebID nicht

MonatID und KundeID werden übertragen, VertriebID nicht

Die automatische Filterzuweisung deckt so gut wie alle Fälle ab, kann aber nicht editiert werden.

Es gäbe noch die benutzerdefinierte Zuweisung, bei der Sie die gewünschte Spaltenzuordnung selbst durchführen. Dies kann beispielsweise notwendig werden, wenn Sie ein vorkommendes Schlüsselfeld zwar sehen wollen, aber gar nicht zum Filtern verwenden möchten. In der benutzerdefinierten Ansicht könnten Sie dieses Feld wieder deaktivieren.

Falls es bei Ihnen dennoch zu einer nicht auf Anhieb lösbaren Konstellation kommen sollte, wenden Sie sich bitte für eine individuelle benutzerdefinierte Umsetzung vertrauensvoll an unser Consulting-Team.